Ловушка trap устанавливает обработчик ошибок.
trap перехватывает ошибки и выполняет определенные действия при их возникновении.

Синтаксис

set -E  # позволяет trap работать
trap some_cmd <SIGNAL>

Боевой пример

#!/usr/bin/env bash
error_handler() {
	local exit_code="$?"
	echo "Ошибка. Код ошибки: $exit_code" >&2
	rm tmp.file  # удаление файлов, созданных скриптом
	exit "$exit_code"
}
 
set -eEuo pipefail
 
trap error_handler ERR
# или:
trap error_handler ABRT HUP INT QUIT TERM ERR

Установил обработчик (функция) error_handler для сигнала ERR.
при возникновении ошибки в любой команде в скрипте, будет вызван обработчик error_handler. Суть error_handler в “чистке за собой” при возникновении какой-то ошибки.

Signals

SIGNALExplain
ABRTabort interrupt signal
HUPterminal restart signal
INTinterrupt signal (Ctrl+C)
QUITexit signal (Ctrl+C)
TERMtermination signal (allows the process to terminate gracefully)
ERRerror signal

Естественно, это не все сигналы

Подробнее см. в man 7 signal глава Standard signals


Соус: Книга Идиомы Bash Глава 5. Файлы и не только Это ловушка!