shell script bug
Bob McGowan
rmcgowan@veritas.com
Fri Jul 28 10:23:00 GMT 2000
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
rmcgowan@veritas.com
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com
More information about the Cygwin
mailing list