[gnu.bash.bug] Major bug in bash 1.04 handling of "$@"

dce@sony.com (David Elliott) (11/15/89)

It appears that the construct

	"$@"

does not work correctly.  The correct interpretations are:

	$*	$1 $2 $3 $4 ...
	"$*"	"$1 $2 $3 $4 ..."
	$@	$1 $2 $3 $4 ...
	"$@"	"$1" "$2" "$3" "$4" ...

The following (long, sorry) typescript shows the problem:

Script started on Tue Nov 14 13:04:53 1989
icky 1>cat bt
#!/mnt/dce/Src/bash-1.04/bash

PATH=/bin:/usr/bin

main()
{
	echo "main got $# arguments:"
	echo 'quoted $@'
	for i in "$@"
	{
		echo -e "\t$i"
	}
	echo ""
	echo 'plain $@'
	for i in $@
	{
		echo -e "\t$i"
	}
	echo ""
	echo 'plain $*'
	for i in $*
	{
		echo -e "\t$i"
	}
	echo ""
	sub 1 "$@"
	sub 2 $@
	sub 3 $*
}

sub()
{
	echo "sub execution $1 got $# arguments"
	echo 'quoted $@'
	for i in "$@"
	{
		echo -e "\t$i"
	}
	echo ""
	echo 'plain $@'
	for i in $@
	{
		echo -e "\t$i"
	}
	echo ""
	echo 'plain $*'
	for i in $*
	{
		echo -e "\t$i"
	}
	echo ""
}

main a1 a2 a3 a4 a5
exit 0
icky 2>bt
main got 5 arguments:
quoted $@
	a1 a2 a3 a4 a5

plain $@
	a1
	a2
	a3
	a4
	a5

plain $*
	a1
	a2
	a3
	a4
	a5

sub execution 1 got 2 arguments
quoted $@
	1 a1 a2 a3 a4 a5

plain $@
	1
	a1
	a2
	a3
	a4
	a5

plain $*
	1
	a1
	a2
	a3
	a4
	a5

sub execution 2 got 6 arguments
quoted $@
	2 a1 a2 a3 a4 a5

plain $@
	2
	a1
	a2
	a3
	a4
	a5

plain $*
	2
	a1
	a2
	a3
	a4
	a5

sub execution 3 got 6 arguments
quoted $@
	3 a1 a2 a3 a4 a5

plain $@
	3
	a1
	a2
	a3
	a4
	a5

plain $*
	3
	a1
	a2
	a3
	a4
	a5

icky 3>
script done on Tue Nov 14 13:04:59 1989
-- 
David Elliott
dce@sony.com | ...!{uunet,mips}!sonyusa!dce
(408)944-4073
"You can lead a robot to water, but you can not make him compute."