# ${#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: ${#-} ${#_}