# 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 . # # 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#$*}"