2012-09-30 50 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

使用bash 參數擴展

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

一些好的DOC: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):

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

哼哼......不知道是否真的回答了這個問題。 – Mat

+0

事實上,它似乎是這樣做的。只是沒有將它標記爲已接受,因爲我沒有嘗試過。 – Matoe