On 8/28/2020 1:00 AM, Gabriel Winkler wrot
> # Causes error
> test=0
> ((test++))
> echo $?
> 1
> echo $test
> 1
>   
"((...))" is the "test form" for an integer expression.  That means
it will return true if the value of the interior, "...", of "((...))"
is non-zero and return false if ((... == 0)).  Remember "$?==0" == true
and "$?!=0" == false,

so if "..." is an expression then for:
   ...       is 0          is non-0
then
((...))      is false      is true
   $?        is 1          is 0

deciding that ((non-zero)) = true was consistent with most programmers'
expectations from other languages that 0 was false and non-zero was
true (which is opposite of the final value of "$?").




Reply via email to