172 похожих чатов

Специалисты баша на страже? Подскажите пожалуйста, есть скрит такого типа

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
Где я натупил?

7 ответов

43 просмотра

Проверка флага лучше делать так some_flag=true if $some_flag; then ... fi

Andrew- Автор вопроса
Kan
Проверка флага лучше делать так some_flag=true if...

Там просто переменная, а не какое-то конкретное название

Kan
Проверка флага лучше делать так some_flag=true if...

Потому что true это shell команда которая возвращает нулевой код выхода, false ненулевой(1) соответственно

Andrew- Автор вопроса
Kan
Потому что true это shell команда которая возвраща...

Ааа, если говорить про true то это указывается. Типа true включить, а false выключить. То есть это вписывается при запуске типа дженкинса

-n проверяет ЗНАЧЕНИЕ переменное, а не ее СУЩЕСТВОВАНИЕ. Если у тебя стоит set -u, то тебе нужно изначально определить переменную

Andrew- Автор вопроса
Andrew
Да, в начале скрипта есть set -eou pipefail

Либо можно вот так проверять на существование переменной if [[ -v a ]]; thebn fi БЕЗ ЗНАКА ДОЛЛАР

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта