From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27699 invoked from network); 31 Aug 2004 21:16:22 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 31 Aug 2004 21:16:22 -0000 Received: (qmail 46368 invoked from network); 31 Aug 2004 21:16:16 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 31 Aug 2004 21:16:16 -0000 Received: (qmail 15707 invoked by alias); 31 Aug 2004 21:16:14 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 20292 Received: (qmail 15697 invoked from network); 31 Aug 2004 21:16:14 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 31 Aug 2004 21:16:14 -0000 Received: (qmail 46127 invoked from network); 31 Aug 2004 21:16:14 -0000 Received: from moonbase.zanshin.com (64.84.47.139) by a.mx.sunsite.dk with SMTP; 31 Aug 2004 21:16:11 -0000 Received: from toltec.zanshin.com (toltec.zanshin.com [64.84.47.166]) by moonbase.zanshin.com (8.13.1/8.13.1) with ESMTP id i7VLG93j029901 for ; Tue, 31 Aug 2004 14:16:09 -0700 Date: Tue, 31 Aug 2004 14:16:09 -0700 (PDT) From: Bart Schaefer To: zsh-workers@sunsite.dk Subject: Re: [bug?] test adf -ge 0 In-Reply-To: <20040831203341.GA8463@DervishD> Message-ID: References: <1093976533.69019.10.camel@localhost> <20040831191131.GG33896@dan.emsphone.com> <20040831203341.GA8463@DervishD> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Spam-Checker-Version: SpamAssassin 2.63 on a.mx.sunsite.dk X-Spam-Level: X-Spam-Status: No, hits=-0.0 required=6.0 tests=BAYES_44 autolearn=no version=2.63 X-Spam-Hits: -0.0 On Tue, 31 Aug 2004, James William Pye wrote: > Using 4.2.0, why does this return successful? > > Both sh(freebsd) and bash echo an error message and return 2. > > > flaw@void:~ % echo $ZSH_VERSION > > 4.2.0 > > flaw@void:~ % test sdf -ge 0 > > flaw@void:~ % echo $? > > 0 It's because of this: zsh% sdf=-1 zsh% test sdf -ge 0 zsh% echo $? 1 zsh% sdf=1 zsh% test sdf -gt 0 zsh% echo $? 0 That is, zsh's builtin test is interpreting "sdf" as a variable name and using the corresponding value, just as (( sdf > 0 )) would do. The value of an unset variable in math context is 0. To forestall the inevitable question about what happens when the value of the variable is not a number: zsh% sdf=auq zsh% auq=42 zsh% echo $(( sdf )) 42 If you wonder why _that_ works, consider this: zsh% sdf='[#13]qua' zsh% qua='6 * 9' zsh% echo $(( sdf )) 13#42