Вдохновленный представленными здесь идеями, я разработал удобный и понятный способ обработки ошибок в сценариях bash в моем проекте bash шаблон .
Просто получая библиотеку, вы получаете из коробки следующее (т.е. она остановит выполнение при любой ошибке, как если бы вы использовали set -e
благодаря trap
на ERR
и некоторым bash- фу ):
Существуют некоторые дополнительные функции, которые помогают обрабатывать ошибки, такие как try and catch или ключевое слово throw , которое позволяет прервать выполнение в точке, чтобы увидеть обратную трассировку. Кроме того, если терминал поддерживает его, он выплевывает смайлы Powerline, окрашивает части вывода для большой читабельности и подчеркивает метод, который вызвал исключение в контексте строки кода.
Недостатком является то, что он не переносим - код работает на bash, вероятно,> = 4 (но я мог бы предположить, что он может быть перенесен с некоторым усилием на bash 3).
Код разделен на несколько файлов для лучшей обработки, но меня вдохновила идея обратного следа из ответа, приведенного выше Лукой Боррионе .
Чтобы узнать больше или взглянуть на источник, см. GitHub:
https://github.com/niieani/bash-oo-framework#error-handling-with-exceptions-and-throw