Bash:
Обробка помилок
Як це зробити:
#!/bin/bash
# Перенаправлення stderr у файл
grep "something" file.txt 2> errors.log
# Обробка помилок із використанням статусів виходу
if ! grep "something" file.txt; then
echo "Ой, щось пішло не так під час пошуку 'something'."
exit 1
fi
# Використання trap для очищення перед виходом зі скрипта через помилку
cleanup() {
echo "Очищення тимчасових файлів..."
rm temp_*
}
trap cleanup ERR
# навмисна помилка: файл не існує
cat temp_file.txt
Приклад виводу при виникненні помилки:
Очищення тимчасових файлів...
cat: temp_file.txt: Такого файлу чи каталогу немає
Поглиблено
Обробка помилок у скриптах Bash сягає корінням до початків Unix shell, де надійні та робочі скрипти були (і залишаються) важливими для системного адміністрування та автоматизації. Традиційно помилки в Bash обробляються шляхом перевірки статусу виходу команди, який за звичаєм повертає 0 у випадку успіху та ненульове значення при помилці.
Bash представив команду trap
як вбудовану, дозволяючи користувачам вказувати команди для запуску за різних сигналів або виходів із скрипта. Це корисно для завдань очищення або як задній запобіжник механізму обробки помилок.
Є також команда set
, яка може змінити поведінку Bash при помилках. Наприклад, set -e
змусить скрипт негайно вийти, якщо будь-яка команда завершиться з ненульовим статусом, шлях до швидкого виявлення та запобігання каскадних помилок.
Альтернативи вбудованій обробці помилок в Bash включають явну перевірку наявності файлів, використання підстановки команд або навіть написання власних функцій для більш деталізованої обробки помилок.
Хоча ретельна обробка помилок часом здається зайвою для маленьких скриптів, це практика, що може зекономити багато часу при налагодженні та запобігти непередбачуваній поведінці і для вас, і для користувачів.
Дивіться також
- Bash Manual про параметри оболонки: https://www.gnu.org/software/bash/manual/bash.html#Shell-Parameters
- Розділ Посібника з поглибленого скриптингу Bash про обробку помилок: https://www.tldp.org/LDP/abs/html/exit-status.html
- Поглиблений посібник по
trap
: https://mywiki.wooledge.org/SignalTrap
Пам’ятайте, скриптинг - це мистецтво, і як ви обробляєте помилки та спотикання, може зробити ваш твір більш стійким. Успішного скриптингу!