2012-09-30 25 views
5

Mi objetivo es añadir un argumento a un programa en ejecución si una variable bash es inexistente, por lo que:Bash condicionales "en línea"

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

me gustaría evitar algo así como:

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

Aunque, ¿es la única opción?

Respuesta

9

usando bash expansión de parámetros:

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

Algunos buena doc: http://wiki.bash-hackers.org/syntax/pe

Y también LANG=C man bash | less +/'Parameter Expansion'

+0

para probar: 'printf"% s \ n "-a some_arg $ {VAR: + ..}' –

+0

Sí, publicado como corresponda. –

2

Se podría utilizar un array para que (ver Arrays):

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

Hum ... no estoy seguro de que responda la pregunta en realidad. – Mat

+0

De hecho, parece que sí. Simplemente no lo marqué como aceptado todavía porque no lo he probado. – Matoe