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

В сценарии 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 добавить конечные пробелы, чтобы оправдать строку
  • Создание заголовков Virtualbox Linux
  • вычесть строку из файла во все строки из другого файла
  • приостановка сценария bash до тех пор, пока не будут выполнены предыдущие команды
  • Создание переменной в каталоге, который сохраняется до удаления
  • Сравните n значений столбцов между каждой записью в 2 файлах и apend данные из файла 2 в файл 1
  • Не удалось выполнить скрипт bash через cron / crontab
  • Есть ли способ загрузить предположительно исходный источник bash-0.99?
  • простой bash while loop создает нежелательный файл с именем 0
  • объявить: «дополнительные атрибуты не вступают в силу до последующих присвоений»
  • Как сгруппировать команды для обработки с помощью функции обертки
  • Параметры Bash и интерактивные оболочки
  • Linux и Unix - лучшая ОС в мире.