Вы должны сгруппировать их в явном виде:
elif [ "$text2" = 'LANDING' ] &&
{ [ "$text4" = 'FAIL' ] || [ "$text4" = '' ]; }; then
Ваша попытка будет преуспеть в любом из двух следующих условий:
text2
было ПОЗДРАВЛЕНИЕ иtext4
был FAIL
text4
был пуст или не установлен.
С &&
и ||
имеют одинаковый приоритет, вы могли бы (как это ни удивительно) писать без группировки:
elif [ "$text4" = '' ] || [ "$text4" = FAIL ] && [ $text2 == 'LANDING' ]; then
Если вы используете bash
, вы можете использовать команду [[ ... ]]
вместо [ ... ]
. Требуется группировка; операторы внутри [[ ... ]]
do имеют приоритеты, которых вы ожидаете ожидать на других языках (то есть a || b && c
- a || (b && c)
, а не (a || b) && c
).
elif [[ $text2 == 'LANDING' && ("$text4" == 'FAIL' || "$text4" == '') ]]; then