✔️Скрипт упал на середине и оставил временные файлы или висящие процессы?
trap ловит сигналы и выполняет очистку перед завершением.▶️Очистка при выходе
#!/bin/bash
TMPFILE=$(mktemp)
trap 'rm -f "$TMPFILE"; echo "Очистка выполнена"' EXIT
echo "данные" > "$TMPFILE"
# даже если скрипт упадёт — файл удалится
▶️Ловим Ctrl+C
#!/bin/bash
trap 'echo " Прервано"; exit 1' INT
echo "Нажми Ctrl+C..."
while true; do
sleep 1
done
▶️Ловим ошибки с номером строки
#!/bin/bash
set -e
trap 'echo "Ошибка в строке $LINENO: $BASH_COMMAND"' ERR
echo "Шаг 1: ок"
ls /несуществующий_путь # ← ошибка тут
echo "Шаг 2: не выполнится"
# Вывод: Ошибка в строке 6: ls /несуществующий_путь
💠
$LINENO — номер строки где произошла ошибка💠
$BASH_COMMAND — команда которая вызвала ошибку▶️Основные сигналы
EXIT — любое завершение скрипта
INT — Ctrl+C
TERM — kill
ERR — ошибка (если set -e)
🖼️ Ссылка на источник
🔨 bash_help
