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
$variable
não estiver vazio, inclua-option
e$variable
na matrizopts
. -
command ... "${opts[@]}"
Isso executa seu comando. Se
opts
não estiver vazio, seus elementos serão adicionados ao comando. Seopts
estiver vazio, nada será adicionado: seria como se"${opts[@]}"
não estivesse presente.