| # first, let's start with the basics |
| |
| recho "$@" |
| recho "$*" |
| |
| recho $@ |
| recho $* |
| |
| set a b |
| |
| recho "$*" |
| |
| # If IFS is null, the parameters are joined without separators |
| IFS='' |
| recho "$*" |
| |
| # If IFS is unset, the parameters are separated by spaces |
| unset IFS |
| recho "${*}" |
| |
| recho "$@" |
| recho $@ |
| |
| IFS='/' |
| set bob 'tom dick harry' joe |
| set $* |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| set bob 'tom dick harry' joe |
| set ${*} |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| set bob 'tom dick harry' joe |
| set $@ |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| set bob 'tom dick harry' joe |
| set ${@} |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| # according to POSIX.2, unquoted $* should expand to multiple words if |
| # $IFS is null, just like unquoted $@ |
| IFS='' |
| set bob 'tom dick harry' joe |
| set $* |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| set bob 'tom dick harry' joe |
| set $@ |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| # if IFS is unset, the individual positional parameters are split on |
| # " \t\n" if $* or $@ are unquoted |
| unset IFS |
| set bob 'tom dick harry' joe |
| set $* |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| set bob 'tom dick harry' joe |
| set $@ |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| # but not for "$@" or "$*" |
| set bob 'tom dick harry' joe |
| set "$*" |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| set bob 'tom dick harry' joe |
| set "$@" |
| recho $# |
| recho $1 |
| recho $2 |
| recho $3 |
| |
| # POSIX.2 says these should both expand the positional parameters |
| # to multiple words |
| set a b c d e |
| IFS="" |
| recho $@ |
| recho "$@" |
| |
| # this example is straight from the POSIX.2 rationale |
| set foo bar bam |
| |
| recho "$@" |
| recho "$*" |
| |
| unset IFS |
| |
| recho "$@" |
| recho $@ |
| recho "$*" |
| |
| IFS=: |
| |
| # special variables |
| set -- 1 2 3 4 5 6 7 8 9 10 |
| |
| bar=${*} |
| foo=$* |
| echo foo = "$foo" |
| echo bar = "$bar" |
| |
| foo1=$@ |
| bar1=${@} |
| |
| echo foo1 = "$foo1" |
| echo bar1 = "$bar1" |
| |
| foo2="$*" |
| bar2="${*}" |
| |
| echo foo2 = "$foo2" |
| echo bar2 = "$bar2" |
| |
| eval foo3='$*' bar3='${*}' |
| echo foo3 = "$foo3" |
| echo bar3 = "$bar3" |
| |
| case $* in |
| *\:*) echo ok 1;; |
| *) echo bad 1;; |
| esac |
| |
| case $@ in |
| *\:*) echo bad 2;; |
| *) echo ok 2;; |
| esac |
| |
| case "$*" in |
| *\:*) echo ok 3;; |
| *) echo bad 3;; |
| esac |
| |
| case "$@" in |
| *\:*) echo bad 4;; |
| *) echo ok 4;; |
| esac |
| |
| IFS=$' \t\n' |
| |
| bar=${*} |
| foo=$* |
| echo foo = "$foo" |
| echo bar = "$bar" |
| |
| foo1=$@ |
| bar1=${@} |
| |
| echo foo1 = "$foo1" |
| echo bar1 = "$bar1" |
| |
| foo2="$*" |
| bar2="${*}" |
| |
| echo foo2 = "$foo2" |
| echo bar2 = "$bar2" |
| |
| eval foo3='$*' bar3='${*}' |
| echo foo3 = "$foo3" |
| echo bar3 = "$bar3" |
| |
| case $* in |
| *\ *) echo ok 1;; |
| *) echo bad 1;; |
| esac |
| |
| case $@ in |
| *\ *) echo ok 2;; |
| *) echo bad 2;; |
| esac |
| |
| case "$*" in |
| *\ *) echo ok 3;; |
| *) echo bad 3;; |
| esac |
| |
| case "$@" in |
| *\ *) echo ok 4;; |
| *) echo bad 4;; |
| esac |
| |
| # tests for special expansion of "$*" and "${array[*]}" when used with other |
| # expansions -- bugs through bash-2.05b |
| ${THIS_SH} ./dollar-star1.sub |
| |
| # tests for expansion of "$@" on rhs of things like ${param:+word}. Bugs |
| # though bash-2.05b |
| ${THIS_SH} ./dollar-at1.sub |
| |
| # tests for expansion of other variables in double-quoted strings containing |
| # $@. Bugs through bash-2.05b |
| ${THIS_SH} ./dollar-at2.sub |
| |
| # tests for various expansions of $* in different contexts -- word split, |
| # no splitting, etc. when $IFS is NUL |
| ${THIS_SH} ./dollar-star2.sub |
| |
| # tests for expansions of "${array[*]}" and "${array[@]}" when $IFS is not the |
| # default and the array contains null elements |
| ${THIS_SH} ./dollar-star3.sub |
| |
| # test for set -u and expansions of $@ when there are no positional parameters |
| ${THIS_SH} ./dollar-at3.sub |
| # test for set -u and expansions of $* when there are no positional parameters |
| ${THIS_SH} ./dollar-star4.sub |
| |
| # tests for expansions of $* when IFS is null |
| ${THIS_SH} ./dollar-star5.sub |
| |
| exit 0 |