if [ -n "${var2}" ] && ( [ "${var2}" == create ] || [ "${var2}" == deploy ] ); then
echo something1
elif [ -n "${var4}" ] && [ "${var4}" == test ]; then
echo something2
else
echo something_else
fi
Идея в том что var2 и var4 могут существовать а могут не существовать. Если есть вар2 и оно соотвествует одному из значений, то делать первый блок иф, если есть вар4 то делать следующий блок иф. Если не того не того нема, то выводит сообщение
Когда запускаю то постоянно получаю ошибку var2: unbound variable
Но её и не должно быть и скрипт должен идти во второй блок. Для этого я поставил проверку переменной -n
Где я натупил?
Проверка флага лучше делать так some_flag=true if $some_flag; then ... fi
Там просто переменная, а не какое-то конкретное название
Потому что true это shell команда которая возвращает нулевой код выхода, false ненулевой(1) соответственно
Ааа, если говорить про true то это указывается. Типа true включить, а false выключить. То есть это вписывается при запуске типа дженкинса
-n проверяет ЗНАЧЕНИЕ переменное, а не ее СУЩЕСТВОВАНИЕ. Если у тебя стоит set -u, то тебе нужно изначально определить переменную
Да, в начале скрипта есть set -eou pipefail
Либо можно вот так проверять на существование переменной if [[ -v a ]]; thebn fi БЕЗ ЗНАКА ДОЛЛАР
Обсуждают сегодня