P.S.: the full test (proof, as bash is the example i compare against) script is this:
# proof {{{ a() { b() { echo "b=$# 1<$1> 2<$2> 3<$3> 4<$4> 5<$5> 6<$6> 7<$7> 8<$8> 9<$9> 10<${10}> 11<${11}> 12<${12}> 13<${13}> 14<${14}> 15<${15}> 16<${16}> 17<${17}> 18<${18}> 19<${19}>" } echo $#,1="$1"/$1,2="$2"/$2,3="$3"/$3,4="$4"/$4,5="$5"/$5,6="$6"/$6,'*'="$*"/$*,'@'="$@"/$@, echo =1 b $#,1="$1"/$1,2="$2"/$2,3="$3"/$3,4="$4"/$4,5="$5"/$5,6="$6"/$6,'*'="$*"/$*,'@'="$@"/$@, echo =2 echo $#,1= "$1" , $1 , 2= "$2" , $2 , 3= "$3" , $3 , 4= "$4" , $4 , 5= "$5" , $5 , 6= "$6" , $6 , '*=' "$*" , $* , '@=' "$@" , $@ , echo =3 b $#,1= "$1" , $1 , 2= "$2" , $2 , 3= "$3" , $3 , 4= "$4" , $4 , 5= "$5" , $5 , 6= "$6" , $6 , '*=' "$*" , $* , '@=' "$@" , $@ , } echo 1 echo "$*"$* $* echo 2 a "$*"$* $* echo 3 IFS=:;echo "$*"$* $*; a "$*"$* $*;unset IFS echo 4 set -- a '' b c echo "$*"$* $* echo 5 a "$*"$* $* echo 6 IFS=': '; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 7 IFS=' :'; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 8 echo "$*"$* $*; a "$*"$* $*;unset IFS echo 9 IFS=; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 10 IFS= ; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 11 IFS=$'\t'; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 12 IFS=$'\n'; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 13 IFS=$'\\'; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 13.1 IFS=; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 14 set -- '' '' '' echo 15 echo "$*"$* $* echo 16 a "$*"$* $* echo 17 IFS=' '; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 18 IFS=:; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 19 IFS=$'\\'; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 19.1 IFS=; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 20 a $* echo 21 a "$*" echo 22 IFS=:; a $*;unset IFS echo 23 IFS=:; a "$*";unset IFS echo 24 set -- '' 'a' '' echo 25 echo "$*"$* $* echo 26 a "$*"$* $* echo 27 IFS=' '; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 28 IFS=:; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 29 IFS=$'\\'; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 29.1 IFS=; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 30 a $* echo 31 a "$*" echo 32 IFS=:; a $*;unset IFS echo 33 IFS=:; a "$*";unset IFS echo 34 set -- '' '' '' a "$@" echo 34.1 a $@ echo 34.2 a "$*" echo 34.3 a $* echo 35 IFS=':'; a "$@";unset IFS echo 36 IFS=' '; a "$@";unset IFS echo 37 IFS=':'; a $@;unset IFS echo 38 IFS=' '; a $@;unset IFS echo 39 IFS=':'; a "$*";unset IFS echo 40 IFS=' '; a "$*";unset IFS echo 41 IFS=':'; a $*;unset IFS echo 42 IFS=' '; a $*;unset IFS echo 43 set -- '' 'a' '' a "$@" echo 43.1 a $@ echo 43.2 a "$*" echo 43.3 a $* echo 44 IFS=':'; a "$@";unset IFS echo 45 IFS=' '; a "$@";unset IFS echo 46 IFS=':'; a $@;unset IFS echo 47 IFS=' '; a $@;unset IFS echo 48 IFS=':'; a "$*";unset IFS echo 49 IFS=' '; a "$*";unset IFS echo 50 IFS=':'; a $*;unset IFS echo 51 IFS=' '; a $*;unset IFS echo 52 set -- a b '' a "$@" echo 52.1 a $@ echo 52.2 a "$*" echo 52.3 a $* echo 53 IFS=':'; a "$@";unset IFS echo 54 IFS=' '; a "$@";unset IFS echo 55 IFS=':'; a $@;unset IFS echo 56 IFS=' '; a $@;unset IFS echo 57 IFS=':'; a "$*";unset IFS echo 58 IFS=' '; a "$*";unset IFS echo 59 IFS=':'; a $*;unset IFS echo 60 IFS=' '; a $*;unset IFS echo 61 set -- a 'b c ' d a "$@" echo 61.1 a $@ echo 61.2 a "$*" echo 61.3 a $* echo 62 IFS=':'; a "$@";unset IFS echo 63 IFS=' '; a "$@";unset IFS echo 64 IFS=':'; a $@;unset IFS echo 65 IFS=' '; a $@;unset IFS echo 66 IFS=':'; a "$*";unset IFS echo 67 IFS=' '; a "$*";unset IFS echo 68 IFS=':'; a $*;unset IFS echo 69 IFS=' '; a $*;unset IFS echo 70 set -- ' a' b 'c ' a "$@" echo 70.1 a $@ echo 70.2 a "$*" echo 70.3 a $* echo 71 IFS=':'; a "$@";unset IFS echo 72 IFS=' '; a "$@";unset IFS echo 73 IFS=':'; a $@;unset IFS echo 74 IFS=' '; a $@;unset IFS echo 75 IFS=':'; a "$*";unset IFS echo 76 IFS=' '; a "$*";unset IFS echo 77 IFS=':'; a $*;unset IFS echo 78 IFS=' '; a $*;unset IFS echo 79 set -- ' a' b ' ' 'd ' a "$@" echo 79.1 a $@ echo 79.2 a "$*" echo 79.3 a $* echo 80 IFS=':'; a "$@";unset IFS echo 81 IFS=' '; a "$@";unset IFS echo 82 IFS=':'; a $@;unset IFS echo 83 IFS=' '; a $@;unset IFS echo 84 IFS=':'; a "$*";unset IFS echo 85 IFS=' '; a "$*";unset IFS echo 86 IFS=':'; a $*;unset IFS echo 87 IFS=' '; a $*;unset IFS echo 88 set -- '' 'a' '' '' 'a' '' '' echo 89 echo "$*"$* $* echo 90 a "$*"$* $* echo 91 IFS=' '; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 92 IFS=:; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 93 IFS=$'\\'; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 93.1 IFS=; echo "$*"$* $*; a "$*"$* $*;unset IFS echo 94 a $* echo 95 a "$*" echo 96 a $@ echo 97 a "$@" echo 98 IFS=:; a $*;unset IFS echo 99 IFS=:; a "$*";unset IFS echo 100 #}}} --steffen | |Der Kragenbaer, The moon bear, |der holt sich munter he cheerfully and one by one |einen nach dem anderen runter wa.ks himself off |(By Robert Gernhardt)