2012-09-30 21 views
5

私の目標は、bashの変数が存在しない場合ように、実行中のプログラムに引数を追加することです:バッシュ「インライン」条件文

bob -a some_arg ((if we have ${VAR} defined add '-b ${VAR}' as an argument))

が、私はのようなものを避けるしたいと思います:

if [[ -z ${VAR} ]]; then 
    bob -a some_arg 
else 
    bob -a some_arg -b ${VAR} 
fi 

ただし、それは唯一のオプションですか?

あなたはそのための配列を使用することができ

答えて

9

bob -a some_arg ${VAR:+-b "$VAR"} 

いくつかの良いドキュメント:http://wiki.bash-hackers.org/syntax/pe

LANG=C man bash | less +/'Parameter Expansion'

+0

をテストしてください: 'printf"%s \ n "-a some_arg $ {VAR:+ ..}' –

+0

それに応じて編集済みです。 –

2

は(Arraysを参照してください):bashのパラメータ展開を使用して

args=(-a some_args) 
if [ ... ] ; then 
    args+=(-b "${VAR}") 
fi 
bob "${args[@]}" 
+0

ハム...実際に質問に答えるかどうかわからない。 – Mat

+0

実際、それはそうです。私はそれを試していないので、まだ受け入れられているとマークしていませんでした。 – Matoe