bash не могу сравнить строки с оператором или - PullRequest
0 голосов
/ 16 января 2020

У меня есть следующий код:

ENVIRONMENT=production
if [ "$ENVIRONMENT" != "production" -o  "$ENVIRONMENT" != "staging" ]; then
   echo "$ENVIRONMENT is not supported, you may use production or staging"
   exit
fi

это вывод:
$ production is not supported, you may use production or staging

Что я делаю не так?

Спасибо

Ответы [ 2 ]

2 голосов
/ 16 января 2020

Вам нужно -a вместо -o. Если $ ENVIRONMENT равен production, он все равно не равен staging.

1 голос
/ 16 января 2020

Используйте case, вместо этого удобнее

ENVIRONMENT=production

case "$ENVIRONMENT" in
    production|staging) : ;; # : means do nothing
    *                 ) echo "$ENVIRONMENT is not supported, you may use production or staging";;
esac
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...