Usando matrizes bash:
opts=()
[ "$variable" ] && opts+=(-option "$variable")
command ... "${opts[@]}"
Como isso usa matrizes bash, isso funcionará mesmo se $variable contiver espaço em branco ou outros caracteres difíceis.
Como funciona
-
opts=()Isso cria uma matriz vazia chamada
opts. -
[ "$variable" ] && opts+=(-option "$variable")Se
$variablenão estiver vazio, inclua-optione$variablena matrizopts. -
command ... "${opts[@]}"Isso executa seu comando. Se
optsnão estiver vazio, seus elementos serão adicionados ao comando. Seoptsestiver vazio, nada será adicionado: seria como se"${opts[@]}"não estivesse presente.