TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #398 1.22K
Меньше if и больше логики в одну строку

Когда вы пишете:


if command; then
echo "OK"
else
echo "Fail"
fi


В мире плачет один котенок…🥺 Ведь есть куда более лаконичная альтернатива:


command && echo "OK" || echo "Fail"


Это логические цепочки (&& и ||), которые позволяют писать коротко и эффективно.

▪️ Принцип short-circuit логики

Bash, как и многие языки, останавливает выполнение цепочки, если уже ясно, что дальше не нужно:

cmd1 && cmd2 - cmd2 выполняется только если cmd1 завершилась успешно (exit 0).
cmd1 || cmd2 - cmd2 выполняется только если cmd1 завершилась с ошибкой (exit ≠ 0).

▪️ Примеры таких условий

📍 Минимизация if:


mkdir newdir && cd newdir


создаст и сразу перейдёт, только если каталог успешно создан.

📍 Команда с fallback:


cp file.txt backup/ || echo "Не удалось скопировать!"


Если cp не удался - сработает echo.

📍 Успех или откат:


make build && echo "Успешно" || echo "Ошибка"


Если echo "Успешно" завершится с ошибкой (что редко, но возможно), то сработает и ||.
Чтобы избежать этого, оберните в скобки:


make build && { echo "Успешно"; } || { echo "Ошибка"; }


📍 Цепочка нескольких условий:


[ -d logs ] && cd logs && ls || echo "Нет каталога logs"


Проверяем наличие каталога
Если есть - заходим и выводим содержимое
Если нет - сообщение

📍 Проверка переменной:


[[ -n $API_KEY ]] && echo "Ключ найден" || echo "Нет ключа"


▪️Более сложные варианты использования

📍 Комбинирование условий:


[[ -f $file && -s $file ]] && echo "Файл существует и не пуст"


📍 Логическая цепочка до первой ошибки:


do_step1 && do_step2 && do_step3 || echo "Ошибка на одном из этапов"


📍 Псевдо-транзакции:


backup && update && restart || rollback


Если что-то пошло не так - rollback.

BashTex 📱 #bash #utils
  • 👍 14
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 →