shell script bug
Chris Faylor
cgf@cygnus.com
Fri Jul 28 10:31:00 GMT 2000
When I said "machines" I should have said "different UNIX systems".
cgf
On Fri, Jul 28, 2000 at 10:25:44AM -0700, Bob McGowan wrote:
>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.
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com
More information about the Cygwin
mailing list