2012-09-30 16 views
5

Moim celem jest, aby dodać argument do programu wykonywany bash czy zmienna jest wcale, jak tak:Bash „inline” warunkowe

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

Chciałbym uniknąć coś takiego:

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

Chociaż jest to jedyna opcja?

Odpowiedz

9

Korzystanie bash parametru ekspansji:

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

Niektóre dobre doc: http://wiki.bash-hackers.org/syntax/pe

A także LANG=C man bash | less +/'Parameter Expansion'

+0

do przetestowania: 'printf"% s \ n "- some_arg $ {VAR: + ..}' –

+0

Yup, post odpowiednio edytowany. –

2

Można użyć tablicę na to (patrz Arrays):

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

Hmm ... nie jestem pewien, czy to właściwie odpowiada na pytanie. – Mat

+0

W rzeczywistości wydaje się, że to robi. Po prostu nie oznaczałem tego jako zaakceptowanego, ponieważ nie próbowałem tego. – Matoe