# ${#c} for any single char c means "length of $c", including all special vars false echo One:${#?} (exit 10) echo Two:${#?} (exit 100) echo Three:${#?} echo echo One:${##} set -- 1 2 3 4 5 6 7 8 9 0 echo Two:${##} set -- 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 \ 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 \ 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 \ 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 echo Three:${##} echo v=$$ test "${#v}" = "${#$}" echo 'Ok ${#$}:' $? echo sleep 0 & v=$! test "${#v}" = "${#!}" echo 'Ok ${#!}:' $? # TODO: ${#-} ${#_}