argc() { printf '%s:\t' "$1"; shift printf "%2d args:" "$#" printf " <%s>" "$@" printf '\n' } IFS=' ,' # IFS=$' \t,' except not all shells have $'' yet SPACE=' ' FOO=foo TWO='one two' TWOS=' one two ' C=',' C2=',,' CSC=', ,' SCSCS=' , , ' S1='one,two' S2='one , two' S3=',one,two' S4='one,two,' S5=' ,one ,two, ' argc foo foo${FOO}foo argc sep foo${SPACE}foo argc two foo${TWO}foo argc twos foo${TWOS}foo argc 2two foo${TWO}${TWO}foo argc 2twos foo${TWOS}${TWOS}foo argc comma foo${C}foo argc C2 foo${C2}foo argc CSC foo${CSC}foo argc SCSCS foo${SCSCS}foo argc S1 foo${S1}foo argc S2 foo${S2}foo argc S3 foo${S3}foo argc S4 foo${S4}foo argc S5 foo${S5}foo