Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: for loop question
On 11/03/2014 06:43 PM, Bart Schaefer wrote:
The 0 is appended because [ -n "$TLC[i]" ] does not produce any output,
But in
      if [ -n "$TLC[i]" ]
... the test must surely produce an answer of some sort.  Yes or no.  If 
that answer is not
acceptable as 'arithmetic', then what is it?
   ! $([ -n "$TLC[i]" ]; echo $?)
'echo $?' seems to receive a one or a zero, and that's 'arithmetic', so
why does
    ! $([ -n "$TLC[i]" ]);
... not do exactly the same thing? Why do we need 'echo' to cough up
a testable number?  What does the '$?' do but carry the return  value of
the test? And what would break if the test just returned it's own
return value with no need for help from 'echo $?' to restate it? When we use
the 'if' form above, we don't need the help of 'echo $?' so why do
we need it inside 'for (('? It seems like a pointless limitation.
Maybe a trivial limitation, but still pointless. Indeed:
   [ -n "$TLC[i]" ] && echo "Yup, there's something in there"
  
... so the [] test doesn't even need 'if' to work, it *does* produce
a testable return value, and IMHO that's 'arithmetic', so it should
work in 'for (('.
Which, by the way, points out another reason you can't just use the
exit status of a command in a math context:  command success/failure
are the reverse of true/false when taken as integer values.
Sure, but we get used to using  '!' to reverse true/false, no?  You 
hafta wonder, tho, how that
convention ever got started. '0' is 'false', yet functions return '0' on 
success.  AFAIK it has
always been like that.
Messages sorted by:
Reverse Date,
Date,
Thread,
Author