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."