ポータビリティーの話( "$@"; が 何も無し にならないで、""; と解釈されてしまう対策の事 )が参考になるかな

What does ${1+"$@"} mean?
http://www.in-ulm.de/~mascheck/various/bourne_args/

Autoconf
http://www.geocities.jp/fut_nis/html/autoconf-ja/Shell-Substitutions.html#Shell%20Substitutions


# 例えば、 $URL が未定義や、ヌルなら
/usr/bin/x-www-browser "$URL"
# は、この様な意味になるが
/usr/bin/x-www-browser ""

/usr/bin/x-www-browser ${URL:+"$URL"}
# は、こうなる
/usr/bin/x-www-browser


test.sh 引数の数に違いが出る(bash の方で理解しやすいので #!/bin/bash で)
#!/bin/bash -vx
foo="hoge"
bar=""
bash -vxc 'echo "$#, " "$@"' "dummy" "$foo"
bash -vxc 'echo "$#, " "$@"' "dummy" "$bar"
bash -vxc 'echo "$#, " "$@"' "dummy" "$baz"
bash -vxc 'echo "$#, " "$@"' "dummy" ${bar:+"$bar"}
bash -vxc 'echo "$#, " "$@"' "dummy" ${baz:+"$baz"}