1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
echo_argc() { echo $# } a() { shift echo_argc "$@" echo_argc ${1:+"$@"} echo_argc "${1:+$@}" echo_argc 1 2 3 } b() { _IFS="$IFS" IFS="$1" shift echo_argc "$@" echo_argc ${1:+"$@"} echo_argc "${1:+$@}" echo_argc 1 2 3 IFS="$_IFS" } a "X" foo bar hoge b "X" foo bar hoge