shell script bug

Noel L Yap yap_noel@jpmorgan.com
Fri Jul 28 16:51:00 GMT 2000


cgf@cygnus.com on 2000.07.28 12:57:49
>On Fri, Jul 28, 2000 at 09:30:13AM -0700, Noel Yap wrote:
>>I have the following script asdf.sh:
>>#!/bin/sh
>>
>>if [ $# = 1 ]
>>then
>>  for v in "$@"
>>  do
>>    echo $# should be 1
>>    echo "$v"
>>  done
>>else
>>  for v in "$@"
>>  do
>>    echo $# isn\'t be 1
>>    ./asdf.sh "$v"
>>  done
>>fi
>>
>>Under bash, the output of the script is:
>>5 isn't 1
>>5 isn't 1
>>5 isn't 1
>>5 isn't 1
>>5 isn't 1
>>
>>Under sh, there is no output.
>
>...which is what I'd expect.

Why?  From what I've read in "Unix Shells by Example" on page 259:
$@   Means the same as $*, except when enclosed in double quotes.  BTW, my
command line was:
./asdf.sh "a b" 'c d' e\ f g h

>I tried this on a couple of machines and the behavior is inconsistent.
>Some print "0 isn't be 1" (sic) and some print nothing.
>
>I would consider the triggering of the for-loop when there are no
>arguments supplied to the shell script to be a bug.

I agree, but I'm not seeing that behaviour.

Noel




This communication is for informational purposes only.  It is not intended as
an offer or solicitation for the purchase or sale of any financial instrument
or as an official confirmation of any transaction. All market prices, data
and other information are not warranted as to completeness or accuracy and
are subject to change without notice. Any comments or statements made herein
do not necessarily reflect those of J.P. Morgan & Co. Incorporated, its
subsidiaries and affiliates.


--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com



More information about the Cygwin mailing list