TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #397 1.01K
Условное выполнение: && vs ; vs || vs !

У bash есть несколько операторов, которые управляют выполнением команд в зависимости от их кода возврата (0 - успех, ≠0 - ошибка). Разница кажется простой, но на практике часто приводит к тому, что люди не совсем понимают, что они используют.

▪️ ; - просто последовательность. Команды выполняются всегда, независимо от успеха/ошибки.


echo "start"; false; echo "end"
# => выведет start, потом end, даже если false упала


Используется, когда важно выполнить все подряд.

▪️ && - только при успехе. Выполнится вторая команда, если первая завершилась успешно (exit code 0).


mkdir data && echo "Папка создана"


Если mkdir упадет (например, папка уже есть), то echo не выполнится.

Полезно для цепочек успеха:


make build && make test && make deploy


▪️ || - только при ошибке. Выполнится, если первая команда завершилась с ошибкой.


ping -c1 host || echo "Хост недоступен"


Удобно для fallback-сценариев.

▪️ Комбинация && … || … Классический паттерн if-else в одну строку:


command && echo "OK" || echo "FAIL"


Подводный камень: если echo "OK" упадет, то выполнится и "FAIL".
Безопасный вариант - скобки:


command && { echo "OK"; } || { echo "FAIL"; }


▪️ ! - инверсия результата. Меняет код возврата команды на противоположный.


! true # вернет 1
! false # вернет 0


Часто встречается в условиях:


if ! grep -q "needle" file.txt; then
echo "Нет совпадений"
fi


Результаты:

; → всегда выполнить
&& → выполнить при успехе
|| → выполнить при ошибке
! → инвертировать результат
&& … || … → if-else, но лучше со скобками для надежности


BashTex 📱 #bash #utils
  • 👍 16
More from @bash_tex
  1. Oct 9, 2026BashTex 📱 #мем
  2. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  3. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  4. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  5. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
  6. Oct 2, 2026madvise() - как процесс подсказывает ядру, как он собирается использовать память Когда про…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →