Bash trap EXIT: удалить временную папку при завершении скрипта

Категория: Bash · Язык: Bash · Обновлено:

Bash trap срабатывает при завершении скрипта и удаляет временные файлы даже после ошибки. Создавайте отдельный каталог через mktemp и удаляйте только этот путь, а не общий системный каталог.

Рабочий пример

Bash
tmp_dir=$(mktemp -d)
cleanup() { rm -rf -- \"$tmp_dir\"; }
trap cleanup EXIT
printf '%s\\n' \"temporary result\" > \"$tmp_dir/result.txt\"
cat \"$tmp_dir/result.txt\"

EXIT ловит обычное завершение и выход после set -e. Для прерывания добавьте traps на INT и TERM; очистка должна быть короткой и не мешать возврату исходного кода ошибки.

Частый вопрос

Сработает ли trap при SIGKILL?

Нет. SIGKILL невозможно перехватить, поэтому cleanup при аварийном завершении процесса не гарантирован. Временные файлы должны иметь безопасные имена и период уборки.