Mit Bash verwenden Sie ein Array und alle Variablen müssen korrekt in Anführungszeichen gesetzt werden:
ARG1="foo bar baz" ARG3="qux" cmd=( mycmd ) [[ -n "$ARG1" ]] && cmd+=( "$ARG1" ) [[ -n "$ARG2" ]] && cmd+=( "$ARG2" ) [[ -n "$ARG3" ]] && cmd+=( "$ARG3" ) printf "%s\n" "$" #exec "$"
Dadurch erhalten Sie den gewünschten Aufruf: exec mycommand "foo bar baz" qux
ohne "leere Zeichenfolge". Entfernen Sie die printf-Zeile und kommentieren Sie die exec-Zeile ab, wenn Sie mit der Funktionsweise zufrieden sind.