Ловушка trap устанавливает обработчик ошибок.
trap перехватывает ошибки и выполняет определенные действия при их возникновении.
Синтаксис
set -E # позволяет trap работатьtrap some_cmd <SIGNAL>
Боевой пример
#!/usr/bin/env basherror_handler() { local exit_code="$?" echo "Ошибка. Код ошибки: $exit_code" >&2 rm tmp.file # удаление файлов, созданных скриптом exit "$exit_code"}set -eEuo pipefailtrap error_handler ERR# или:trap error_handler ABRT HUP INT QUIT TERM ERR
Установил обработчик (функция) error_handler для сигнала ERR. ⇒ при возникновении ошибки в любой команде в скрипте, будет вызван обработчик error_handler. Суть error_handler в “чистке за собой” при возникновении какой-то ошибки.
Signals
SIGNAL
Explain
ABRT
abort interrupt signal
HUP
terminal restart signal
INT
interrupt signal (Ctrl+C)
QUIT
exit signal (Ctrl+C)
TERM
termination signal (allows the process to terminate gracefully)
ERR
error signal
Естественно, это не все сигналы
Подробнее см. в man 7 signal→ глава Standard signals
Соус: Книга Идиомы Bash→ Глава 5. Файлы и не только→Это ловушка!