Document bug of 'for' compound command

2017-08-18 Thread vanou

Hello,

I think, there is document bug related to 'for' compound command in both 
Man page and Info doc.



In man page, description of 'for' compound command ...


*  for (( expr1 ; expr2 ; expr3 )) ; do list ; done
* First, the arithmetic expression expr1 is evaluated according
* to the rules described below under ARITHMETIC EVALUATION.
* The arithmetic  expression  expr2 is  then evaluated  repeatedly
* until it evaluates to 
zero.  <-- not zero, but 1
* Each time expr2 evaluates to a non-zero 
value,   <-- not non-zero,but 0

* list is executed and the arithmetic expression expr3 is evaluated.
* If any expression is omitted, it behaves as if it evaluates to 
1.<-- not 1, but 0

* The return value is the exit status of the last command in list
* that is executed, or false if any of the expressions is invalid.



And same document bug in Info documentation of bash.

This bug is seen at bash 4.4.

Thanks,
Vanou




Re: Document bug of 'for' compound command

2017-08-18 Thread vanou

Thanks Pierre Gaston and DJ Mills,

I misunderstood arithmetic expression and now make sense.

Thank you.


On 08/19/2017 01:12 AM, DJ Mills wrote:
It's an arithmetic expression, 1 is true and 0 is false. This is not 
the same as the exit status of a command


On Fri, Aug 18, 2017 at 11:59 AM, Pierre Gaston 
mailto:pierre.gas...@gmail.com>> wrote:


On Fri, Aug 18, 2017 at 6:22 PM, vanou mailto:v...@star.ocn.ne.jp>> wrote:

> Hello,
>
> I think, there is document bug related to 'for' compound command
in both
> Man page and Info doc.
>
>
> In man page, description of 'for' compound command ...
>
> 
> 
> *  for (( expr1 ; expr2 ; expr3 )) ; do list ; done
> * First, the arithmetic expression expr1 is evaluated according
> * to the rules described below under ARITHMETIC EVALUATION.
> * The arithmetic  expression  expr2 is  then evaluated 
repeatedly

> * until it evaluates to zero.
> <-- not zero, but 1
> * Each time expr2 evaluates to a non-zero value,
>  <-- not non-zero,but 0
> * list is executed and the arithmetic expression expr3 is
evaluated.
> * If any expression is omitted, it behaves as if it
evaluates to 1.
> <-- not 1, but 0
> * The return value is the exit status of the last command in
list
> * that is executed, or false if any of the expressions is
invalid.
> 
> 
>
>
> And same document bug in Info documentation of bash.
>
> This bug is seen at bash 4.4.
>
> Thanks,
> Vanou
>
>
> The documentation seems ok, what makes you think the contrary?
eg
for ((;0;)); do echo foo;done # prints nothing
for ((;1;)); do echo foo;done # is infinte
for ((;;)); do echo foo;done # is also infinite