Atribuição condicional baseada na variável de ambiente

6

Em um script bash, estou atribuindo uma variável local para que o valor dependa de uma variável de ambiente externa e global ( $MYAPP_ENV ).

if [ "$MYAPP_ENV" == "PROD" ]
then
    [email protected]
else
    [email protected]
fi

Existe uma maneira mais curta (ainda limpa) de escrever a tarefa acima? (Presumivelmente, usando algum tipo de operador condicional / inline se.)

    
por Jonik 20.09.2013 / 09:45

3 respostas

11

Você também pode usar um caso / alternar em bash para fazer isso:

case "$MYAPP_ENV" in
 PROD) SERVER_LOGIN="[email protected]" ;;
    *) SERVER_LOGIN="[email protected]" ;;
esac

Ou este método:

[ "$MYAPP_ENV" = PROD ] &&
   [email protected] ||
   [email protected]
    
por 20.09.2013 / 10:57
7

Tente:

[ condition ] && var=value_when_true || var=value_when_false

Se sua atribuição for numérica, você poderá usar a operação bash ternary:

(( assign_condition ? value_when_true : value_when_false ))
    
por 20.09.2013 / 10:21
3

Você pode usar os operadores && e ||

[ "$MYAPP_ENV" == "PROD" ] && [email protected] || [email protected]
    
por 20.09.2013 / 09:50