At Thursday 29 July 2010, Andrew Benton wrote: > > andy:~$ count=0 > andy:~$ ((count++)) > andy:~$ echo $? > 1 > andy:~$ ((count++)) > andy:~$ echo $? > 0 I don't think it's a bug, it's just an effect of: 1. `((EXPR))' returning a non-zero exit status iff EXPR evaluates to zero, and 2. `var++' being a *post-increment* (i.e. the increment of `var' takes place after its previous value has been substituted in the expression).
You can verify this with: $ i=0 $ echo $((i++)) 0 $ echo $i 1 $ echo $((++i)) 2 $ echo $i 2 > > Fix: > > This isn't a fix but I can work around this bug if I use > ((++count)) Yes, because here `count' is incremented before its value is substituted into the expression. > > andy:~$ count=0 > andy:~$ ((++count)) > andy:~$ echo $? > 0 > andy:~$ HTH, Stefano