Условное присвоение на основе переменной среды

В сценарии bash я назначаю локальную переменную, так что значение зависит от внешней глобальной переменной среды ( $MYAPP_ENV ).

 if [ "$MYAPP_ENV" == "PROD" ] then SERVER_LOGIN=foobar123@prod.example.com else SERVER_LOGIN=foobar987@test.example.com fi 

Есть ли более короткий (но чистый) способ написать вышеприведенное задание? (Предположительно, используя какой-то условный оператор / inline if.)

Вы также можете использовать case / switch в bash для этого:

 case "$MYAPP_ENV" in PROD) SERVER_LOGIN="foobar123@prod.example.com" ;; *) SERVER_LOGIN="foobar987@test.example.com" ;; esac 

Или этот метод:

 [ "$MYAPP_ENV" = PROD ] && SERVER_LOGIN=foobar123@prod.example.com || SERVER_LOGIN=foobar987@test.example.com 

Пытаться:

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

Если ваше назначение является числовым, вы можете использовать тройную операцию bash :

 (( assign_condition ? value_when_true : value_when_false )) 

Вы можете использовать && и || операторы

 [ "$MYAPP_ENV" == "PROD" ] && SERVER_LOGIN=foobar123@prod.example.com || SERVER_LOGIN=foobar987@test.example.com