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