n() { echo $#; } set -- n "$@" # should be 1 n "$@"'' n ''"$@" n ''"$@"'' set -- '' n "$@" # should be 1 n "$@"'' n ''"$@" n ''"$@"'' set -- '' '' n "$@" # should be 2 n ''"$@" # should be 2 n "$@"'' # should be 2 n ''"$@"'' x=x set -- n ${x+"$@"} # should be 1 n ${x+"$@"''} n ${x+''"$@"} n ${x+''"$@"''} set -- '' n ${x+"$@"} # should be 1 n ${x+"$@"''} n ${x+''"$@"} n ${x+''"$@"''} set -- '' '' n ${x+"$@"} # should be 2 n ${x+''"$@"} # should be 2 n ${x+"$@"''} # should be 2 n ${x+''"$@"''} set -- n "$@" "$@" n "$@""$@" n ${x+"$@" "$@"} set -- '' n ${x+"$@" "$@"} n "$@" "$@" set -- '' '' n ${x+"$@" "$@"} n "$@" "$@" n "$@""$@" # new tests unset -v x v=$'\177' recho ''$'\177''' recho $'\177''' recho ''$'\177' recho ''$v'' recho ''$v recho $v''