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

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

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

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

3 Solutions collect form web for “Условное присвоение на основе переменной среды”

Вы также можете использовать 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 
  • Как я могу отфильтровать журнал только для строк в два раза?
  • подсчет символов с использованием bash
  • Прокрутка по выделенному файлу в сценарии bash
  • Bash: переименовать файл с префиксом в качестве суффикса
  • Функция Bash - exec для запуска программ
  • Быстрая ссылка для быстрого поиска определенного символа
  • Возможно ли использовать bash -c 'bashrc?
  • Скопировать файлы в каталог с определенной строкой по имени?
  • Проверка числа с десятичной запятой
  • добавить имя сервера до имени файла с uname -n
  • Это правильный способ проверить, объявлен ли параметр?
  • Linux и Unix - лучшая ОС в мире.