Подводные камни в Bash №5
Представь, что у тебя есть две коробки. На одной написано «хуи дрочёны», а на другой «пики точены».
Ты хочешь проверить:
— В первой коробке хуи? — Во второй коробке пики?
Если оба условия верны, ты говоришь — заебись!.
Бэд практика:
Тут -a
(И) считается устаревшим и в некоторых случаях это работать не будет. Так что если такое видишь или пишешь, сразу сноси, это хуйня!
Одна из проблем с
[ A = B -a C = D ]
(или-o
) в том, что POSIX не определяет, как должна работать команда[ ... ]
, если у неё больше 4 аргументов.
Бест-практика:
Разделяем на две проверки:
Сначала проверяется первое условие, затем второе.
Если оба верны — команда выполнится.
Либо делаем конкретно под Bash:
Здесь можно использовать &&
, всё будет работать правильно.
Выводы:
Если используешь [ ... ]
, то делай две отдельные проверки.
Если [[ ... ]]
, то можно писать всё внутри.