2012-09-30 6 views
5

Amacım bash değişken mevcut ise böylece, yürütülmekte olan bir programa bir argüman eklemektir:Bash "satır içi" şart

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

ben gibi bir şey önlemek istiyorum:

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

Tek seçenek bu mu?

Bunun için bir dizi kullanabilirsiniz

cevap

9

:

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

Bazı iyi doc: http://wiki.bash-hackers.org/syntax/pe

Ve ayrıca LANG=C man bash | less +/'Parameter Expansion'

+0

test etmek için: "printf"% s \ n "-a some_arg $ {VAR: + ..}' –

+0

Yup, post düzenleme buna göre. –

2

(Arrays bakınız): bash parametre genişleme kullanma

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

Hum ... bu sorunun cevabını verdiğinden emin değilim. – Mat

+0

Aslında, öyle görünüyor. Henüz denemediğimden beri onu kabul olarak işaretlemedim. – Matoe