✔️Скрипт упал с ошибкой, а временный файл остался. Или соединение не закрылось. Или lock-файл завис. Это классика и
trap решает её в одну строчку.➡️ Что делает
trap▶️Регистрирует функцию, которая запустится при выходе из скрипта — неважно, нормальном или аварийном.
▶️Вы один раз описываете логику очистки и забываете об этом:
#!/bin/bash
set -euo pipefail
tmpfile=$(mktemp)
cleanup() {
rm -f "$tmpfile"
echo "Cleaned up temporary files"
}
trap cleanup EXIT # сработает при любом выходе
# Основная работа
echo "Processing..." > "$tmpfile"
cat "$tmpfile"
▶️
EXIT это сигнал, который bash отправляет при завершении скрипта. Функция cleanup удалит временный файл, даже если скрипт упал на середине.➡️ Что можно убирать через
trap▶️Временные файлы и директории, lock-файлы, открытые соединения с базой, фоновые процессы, которые скрипт запустил сам.
➡️ Почему это лучше, чем
rm в конце скрипта▶️
rm в конце не выполнится, если скрипт упадёт раньше. trap cleanup EXIT выполнится всегда — это гарантия на уровне интерпретатора.🖼️ Ссылка на источник
🔨 bash_help
