2012-09-30 13 views
5

Il mio obiettivo è quello di aggiungere un argomento a un programma in esecuzione se una variabile bash è esistente, come così:Bash "inline" condizionali

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

mi piacerebbe evitare di qualcosa di simile:

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

Sebbene, è l'unica opzione?

risposta

9

Utilizzando bash espansione di parametro:

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

Qualche buona doc: http://wiki.bash-hackers.org/syntax/pe

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

+0

per testare: 'printf"% s \ n "-a qualche_arg $ {VAR: + ..}' –

+0

Sì, post modificato di conseguenza. –

2

Si potrebbe utilizzare una matrice per questo (si veda Arrays):

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

Hum ... non sono sicuro che risponda effettivamente alla domanda. – Mat

+0

In effetti, sembra di fare. Solo non lo segnava come accettato ancora da quando non l'ho provato. – Matoe