Subject: Re: shell script bug
From: Bob McGowan <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Fri, 28 Jul 2000 10:25:44 -0700

Interesting.  I just tried a different script to check the "$@" versus
"$*" processing and did not see any problems with or differences in how
the 3 shells handle them.  I'm running these by invoking the desired
shell at the prompt:

	$ shell ./script

My script:

###
# "$@" with no args should be "empty"

checkat()
{
        echo $#
}

checkasterix()
{
        echo $#
}

checkat "$@"       # "empty"
checkasterix "$*"  # null string
###

The output is consistently:
0
1
when I invoke the script with no arguments.

Chris Faylor wrote:
> 
> 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.
> 
> 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.

-- 
Bob McGowan
Staff Software Quality Engineer
VERITAS Software
[email-masked]

--
Want to unsubscribe from this list?
Send a message to [email-masked]