Бебебед практики bash, продолжаем.

Нельзя просто так взять условие из языка «Сиськи» и заменить его на квадратные скобки.

Сколько ни повторяй, один хер делают неправильно.

Команда [ — это не просто скобка, а отдельная команда. Она проверяет, пиздёж ли что-то или нет.

Хуёвая практика:

if [ a = b ] && [ c = d ]; then
  ...
fi

В этом примере сначала проверяется a = b, если это пиздёж — дальше ничего не выполняется.

Если же a = b НЕ пиздёж — тогда проверяется c = d. И если c = d НЕ пиздёж, то выполняется то, что внутри then.

Бест-практика! Зырь!

if [[ a = b && c = d ]]; then
  ...
fi

Делаем двойные скобки. Двойные скобки умеют работать с && внутри.

[[ ... ]] — это специальная команда Bash, которая используется для проверки условий. Она умнее и безопаснее, чем обычная [ ... ].

Внутри неё можно использовать логические операторы && (и) и || (или) без дополнительных скобок или дополнительных [.

Рассмотрим пример:

a="hello"
b="hello"
c="bashdays"
d="bashdays"

if [[ $a = $b && $c = $d ]]; then
  echo "Условия совпали!"
fi

[ — работает с одним условием за раз.

[[ — может работать с комбинированными условиями прямо внутри себя.

Для тупых Кто до сих пор не понял:

Представь, что ты говоришь своей бабушке: Если я убрал в комнате И сделал уроки, я могу поиграть в девопс-инженера.

Ну так вот:

Роман Шубин
Роман Шубин
CEO & CTO, Главред в «Цифровой улей»
Задать вопрос
[[ ... ]] — это бабушка, которая за всю свою жизнь повидала много дерьма и вполне может понять твою сложную фразу: убрал И сделал уроки.

[ ... ] — это твой младший брат, пиздюк ещё не в состоянии воспринимать такие большие выпады, и ему нужно говорить частями.

Вот и вся наука. Изучай!