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

Если диск находится под VX затем, необходимо не настроить его от Veritas:

Если Вы хотите заменить его новым, следовать этой статье

Удалить метаданные VX, выполненные после команды:

# /usr/lib/vxvm/bin/vxdiskunsetup c0t1d0

10
22.07.2018, 06:41
3 ответа

Вы могли также использовать случай/переключатель в 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
15
27.01.2020, 19:59
  • 1
    оператор выбора намного более читаем, чем запихивание всего этого в одну строку (который может закончиться в катастрофе, если вторая команда может перестать работать, в этом случае, это прекрасно, но вхождение в ту привычку может быть дорогостоящим). Это - лучший метод при контакте со случаями как это. –  Chris Down 20.09.2013, 12:02
  • 2
    @Jonik - примите один из ответов, если он удовлетворяет Ваши потребности так, чтобы другие знали, что Ваш вопрос был решен.Спасибо. –  slm♦ 02.10.2013, 05:30
  • 3
    я предполагаю оператор выбора, является самым чистым из представленных опций, даже если это не точно, что я искал. О, хорошо синтаксис Bash является неловким, не может обойти это. :) –  Jonik 07.10.2013, 21:52
  • 4
    @Jonik - это было моим открытием также. Верьте мне, я искал альтернативы, я предпочитаю широкие строки, которые делают много, а не длинные программы, и if/then/else является очень подробным для моих вкусов также. –  slm♦ 07.10.2013, 22:24

Попытка:

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

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

(( assign_condition ? value_when_true : value_when_false ))
8
27.01.2020, 19:59
  • 1
    Первый не является троичным. true && false || echo "if this was ternary, this wouldn't be executed" –  Chris Down 20.09.2013, 12:01
  • 2
    @chris - верный, но это - все еще хороший практический ответ, даже если терминология не совершенно правильна. –  cas 20.09.2013, 12:09
  • 3
    @CraigSanders вопросы терминологии - я вижу используемый слишком часто в сценариях, когда вторая команда может перестать работать. –  Chris Down 20.09.2013, 12:11
  • 4
    @ChrisDown: Сделайте редактирование к ответу, это лучше теперь? –  cuonglm 13.02.2016, 04:57
  • 5
    Lol в течение этих 2,5 лет это взяло для редактирования cuonglm! –  iruvar 13.02.2016, 06:04

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

[ "$MYAPP_ENV" == "PROD" ] && SERVER_LOGIN=foobar123@prod.example.com || SERVER_LOGIN=foobar987@test.example.com
4
27.01.2020, 19:59

Теги

Похожие вопросы