title: Do expressions enclosed in double parentheses mean return inside a bash function?
body: <p>I cannot explain the behavior of the following program. I'd expect it to enter an infinite loop, but instead it just prints &quot;Hello!&quot;. The only explanation I can think of is that the semantics of the expression between double parentheses means <code>return</code> in a bash function, but I could not find any documentation about this, so I'm probably wrong.</p>
  <pre class="lang-sh prettyprint-override"><code>#!/usr/bin/env bash
  
  set -euo pipefail
  
  foo(){
      I=0
      while : ; do
          echo &quot;Hello!&quot;
          ((I++))
          sleep 1
          echo &quot;You won't reach here&quot;
      done
  }
  
  foo
  </code></pre>