TGViewer
Bash Days | Linux | DevOps Bash Days | Linux | DevOps @bashdays · 23.6K subscribers
Post #161 13.5K
Всем привет кого не видел и новеньким. Нас тут уже овер 10к единомышленников, растем!

Вопрос из зала — я бывший java разработчик, подался в девопсы, теперь неспешно изучаю bash. Подскажите, если какая-то альтернатива конструкции try/catch?

Начнем с того, что бывших разработчиков не бывает. Даже если ты выйдешь из айти и начнешь ловить крабов, айти не выйдет из тебя. Проверено многолетним опытом и не только моим.

Ну а по делу, try/catch в bash — нет. На этом можно было бы и закончить, но увы... давай обсудим.

Аналогичного поведения можно добиться используя логический оператор ||.

Например:

command1 || command2

Если первая команда вывалит ошибку, то отработает вторая команда. Ну чем не try/catch, Даже лучше! Правда концепция работы не такая как в других языках.

На практике это выглядит так:

false || echo "error, returned false"

Сейчас сработает catch и выведет «error, returned false», так как команда false всегда возвращает ошибку. Статус: exit 1.

А если false заменить на true, но сработает try и в терминале ничего не отобразится. Бесподобно.

Итоговая конструкция будет такой:

#!/bin/bash

{ # try
echo "hello bashdays"
false

} || { # catch
echo "error, returned false"
}

Для catch можно сделать отдельную функцию. Которая будет автоматически включать режим дебага (sex -x) либо какие-то другие свистоперделки для отладки.

Вообще это больше относится к костылям и подобное можно реализовать с таким же успехом на IF’ах. А можно банально проверять статус выхода, если > 0 то кирдык.

Я такие конструкции не использую, максимум втыкаю в начала скрипта set -e. Если статус команды будет > 0, то немедленно всё выпадет в осадок.

Тут нет правильных и неправильных решений. Как говорится если работает, то уже хорошо. Остальное детали.

Если есть чего добавить, велком в комментарии. Возможно у тебя есть секретный модуль для bash с try/catch.

tags: #linux #bash
—
💩 @bashdays
  • 👍 145
More from @bashdays
  1. Sep 29, 2026Самый жаркий холивар в команде — это не systemd, а какие заказать роллы на всю команду. Од…
  2. Sep 24, 2026Post #1565
  3. Sep 23, 2026Здрасти приехали, решил я в кой-то веке воспользоваться услугами Codex, создал аккаунт, по…
  4. Sep 22, 2026Всем привет, с вами TagdTagd. Сегодня опять поднимем тему архивов, но немного с другой сто…
  5. Sep 15, 2026Всем привет, с вами TagdTagd. И это вторая часть. Практическая. С первой частью можешь озн…
  6. Sep 9, 2026Всем привет, с вами TagdTagd! Я тут вынужденно перешёл на MAX. Просто Telegram перестал ра…
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 →