Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: evaluating a condition



On Sun, Sep 12, 1999 at 11:51:39PM +0000, Bart Schaefer wrote:
> On Sep 12,  8:41pm, Gaspar Bakos wrote:
> } Subject: evaluating a condition
> }
> } I have the following script, and I would like to print the numbers in the
> } terminal from ${min} to ${max}, if both of them are smaller than 10.
> 
> At first I thought you'd found a bug in the math parser, but:
> 
> } export min=$3;export max=$4;
> }         if (($[min]<10 && $[max]<10)) then
>                            ^^
> There's a metafied space here.  I think zsh is interpreting "\240$[max]" as
> an identifier; e.g. if max=11, the identifier name is "\240\061\061".  That
> identifier isn't defined, so it's value is 0 which is always < 10.
	??? what?

	((...)), at least according to the docs (and as implemented in ksh)
is just another syntax for `let '...''.  all the "metafying" (actually, 
quoting is unmetafying) does is prevent the shell from interpreting the 
space as a word separator; once the string to be evaluated is passed to let,
the space is a space again, and let _should_ (and does, in 3.1.6) simply
ignore it, such that the entire block of code does work.

> } 	        for i in {${min}..${max}}; do echo $i; done
> }         fi
> 
> This is a danger of permitting identifiers to contain non-ascii characters.
	??? okay, what did you do to bart?  :)
	i assume you meant non-printable and not non-ascii here, though 
technically a space is still printable.

	one related question that i've long wondered but never about cared 
enough to ask: is there a difference between the $[...] and ${...} notations?

	-- sweth.

-- 
Sweth Chandramouli ; <sweth@xxxxxxx>
<a href="http://astaroth.nit.gwu.edu/resume/";>Will Work For Food.</a>
<a href="http://astaroth.nit.gwu.edu/~sweth/disc.html";>*</a>



Messages sorted by: Reverse Date, Date, Thread, Author