| # This program is free software: you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation, either version 3 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| # |
| # tests for quoted and unquoted, split and unsplit expansions of $@ and $* |
| # Posix interpretation 221 speaks to this issue |
| |
| set -- a b |
| IFS= |
| x=abc |
| |
| printf "<%s>\n" ${x#$*} |
| |
| a="a bc" |
| echo ${a#$*} |
| unset x a |
| |
| a=$@ |
| echo "$a" |
| |
| a=$* |
| echo "$a" |
| |
| printf '<%s>' $@ ; echo |
| |
| IFS=' |
| ' |
| |
| a=$@ |
| echo "$a" |
| |
| a=$* |
| echo "$a" |
| |
| unset a |
| |
| unset IFS |
| set a b "c d" |
| printf '<%s>' $* ; echo |
| printf '<%s>' ${q-$*} ; echo |
| |
| IFS= |
| set a b "c d" |
| printf '<%s>' $* ; echo |
| printf '<%s>' ${q-$*} ; echo |
| |
| IFS=: |
| set a b |
| printf '<%s>' ${foo=$*} ; echo |
| printf '<%s>' "${foo}" ; echo |
| |
| unset foo |
| IFS=' |
| ' |
| printf '<%s>' ${foo=$@} ; echo |
| printf '<%s>' "$foo" ; echo |
| |
| IFS=? |
| set a c |
| foo=abcd |
| |
| echo ${foo#"$*"} |
| echo "${foo#$*}" |
| |
| echo "${foo#'a?c'}" |
| echo "${foo#a?c}" |
| |
| IFS=? |
| set a c |
| str=a$'\001'c |
| pat=a$'\001' |
| echo "${str#$pat}" |
| |
| set a b |
| IFS=: |
| |
| a=$@ |
| recho "$a" |
| |
| recho ${foo=$*} |
| recho "$foo" |
| |
| unset foo |
| IFS=' |
| ' |
| recho ${foo=$@} |
| recho "$foo" |
| |
| shift $# |
| unset foo x |
| |
| set -- a b |
| x=abc |
| |
| IFS= |
| printf "<%s>\n" ${x#$*} |
| printf "<%s>\n" "${x#$*}" |
| |
| x=abcd |
| set a c |
| IFS='?' |
| printf "<%s>\n" ${x#$*} |
| printf "<%s>\n" "${x#$*}" |