Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: Airthmetic confusion...
- X-seq: zsh-users 8838
- From: Meino Christian Cramer <Meino.Cramer@xxxxxx>
- To: sequethin@xxxxxxxxx
- Subject: Re: Airthmetic confusion...
- Date: Tue, 17 May 2005 05:13:16 +0200 (CEST)
- Cc: Berndt.Matthias@xxxxxx, zsh-users@xxxxxxxxxx
- In-reply-to: <3060c239050516135933fd2ff6@xxxxxxxxxxxxxx>
- Mailing-list: contact zsh-users-help@xxxxxxxxxx; run by ezmlm
- References: <20050516.195529.74749456.Meino.Cramer@xxxxxx> <20050516224332.246839a4@localhost> <3060c239050516135933fd2ff6@xxxxxxxxxxxxxx>
From: Mike Hernandez <sequethin@xxxxxxxxx>
Subject: Re: Airthmetic confusion...
Date: Mon, 16 May 2005 16:59:27 -0400
Hi,
I see that "0" is false and !0 is true...but...we
are doing arithmetic and not logical evaluation.
Suppose the following situation:
There is a script which first line set
set -e
(exit on error), because your script do something not-undoable.
Inside the script there is a claculation, which has to do correct
thing in the sense of for example not accessing inexistant variables
or not accessing arrays out of bounds.
The calculations are of non-trivial nature (that's why we let the
computer do such boring tidy things ;)
Now a calculation returns "0" as its result and BANG! the script
exits.
?
Not what was intended, I think.
As a sideffect a previously existant variable become inexistant by
assigning a "0"? Not very logical I think.... :O)
Arithmetic evaluation should be sperated from logical evaluation.
Happy zshing!
Meino
> On 5/16/05, Matthias Berndt <Berndt.Matthias@xxxxxx> wrote:
> > I don't know your problem, but these expression works fine here. Did you
> > make something special before or in your startup-scripts?
>
> Actually what happens is that the operation and assignment are
> performed but the return code of the expression evaluates to 1, which
> is an error. I tried on my machine and get the same results:
>
> (mike@mhernandez)(24/pts)(04:45pm:05/16/05)-
> (%:~)- (( x = 0 ))
> (mike@mhernandez)(25/pts)(04:46pm:05/16/05)-
> (%:~)- echo $?
> 1
> (mike@mhernandez)(26/pts)(04:46pm:05/16/05)-
> (%:~)- echo $x
> 0
>
> If you set a variable to any integer other than 0, positive or
> negative, the return code is 0, which is successful exit, for example:
>
> (mike@mhernandez)(30/pts)(04:53pm:05/16/05)-
> (%:~)- (( r = -5 ))
> (mike@mhernandez)(31/pts)(04:53pm:05/16/05)-
> (%:~)- echo $?
> 0
>
> This occurs with a regular assignment as above, or if the assignment
> contains some variables (as in x = b - 4, if b was 4 the return code
> would be 1, yet the math is done and x is set to equal 0).
>
> There must be a reason why assigning 0 to a variable is considered an
> error (a reason which I could speculate about, but don't know for
> sure).
>
> Mike
>
Messages sorted by:
Reverse Date,
Date,
Thread,
Author