Re: dash 0.5.9: break and continue bug

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 23/08/16 22:23, Zdenek Kaspar wrote:
Hi, I've noticed 0.5.9 does ignore break and continue statements, here
is simple reproducer:


one() {
    echo "  one"
    break
}

two() {
    echo "  two"
}

for i in 1 2
do
    echo "loop $i:"
    one
    two
done


dash-0.5.9:
$ dash dash-break-test
loop 1:
  one
  two
loop 2:
  one
  two

dash-0.5.8-4.fc24.x86_64:
$ dash dash-break-test
loop 1:
  one

break and continue now need to appear in the loop directly, they cannot be wrapped in a function any more. Although this is a visible change in behaviour, it is intentional:
  <https://www.mail-archive.com/dash%40vger.kernel.org/msg00929.html>

The standard is a bit unclear on how break and continue are meant to behave in these situations, as it refers to the "enclosing loop" without defining what counts and doesn't count as the enclosing loop, but the next version of the standard will make it clear that your script is not required to behave the way you expect:
  <http://austingroupbugs.net/view.php?id=842>

That said, shells are still allowed to treat your script the way you expect.

HTH, Z.
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [LARTC]     [Bugtraq]     [Yosemite Forum]     [Photo]

  Powered by Linux