Использование массивов bash:
opts=() [ "$variable" ] && opts+=(-option "$variable") command ... "$"
Поскольку для этого используются массивы bash, это будет работать, даже если они $variable
содержат пробелы или другие сложные символы.
Как это устроено
opts=()
Это создает пустой массив с именем
opts
.[ "$variable" ] && opts+=(-option "$variable")
Если
$variable
не пусто, то добавляем-option
и$variable
в массивopts
.command ... "$"
Это выполняет вашу команду. Если
opts
не пусто, то его элементы добавляются в команду. Еслиopts
пусто, ничего не добавляется: это было бы так, как если бы"$"
его не было вообще.