스크립트가 「종료될 때 정리(임시 파일 삭제·로그 마무리)를 보장」하고 싶을 때 trap.
시그널·종료 이벤트에 핸들러 등록.
기본.
trap 'cleanup_function' EXIT — 스크립트 종료 시(정상이든 비정상이든) cleanup_function 실행.
임시 파일 정리·잠금 해제 등에 표준.
여러 시그널.
trap 'cleanup' EXIT INT TERM — Ctrl+C(INT), kill 명령(TERM), 정상 종료(EXIT) 모두에 동일 핸들러.
INT는 사용자가 끊었다는 신호.
활용 예.
tmpfile=$(mktemp).
trap 'rm -f "$tmpfile"' EXIT.
...
작업 ...
— 어떻게 종료되든 임시 파일 자동 삭제.
「자원 해제 보장」 패턴.
trap 해제.
trap - EXIT — EXIT 핸들러 제거.
디버깅 시 중간에 끊고 임시 파일 보존하고 싶을 때.
trap '' EXIT는 다름 — 「아무것도 안 하는 핸들러」 등록(다른 사용).
한 줄 요약
trap은 신호·종료 이벤트에 핸들러.
trap 'cleanup' EXIT가 임시 파일 정리의 표준 패턴.
INT·TERM 함께 등록 흔함.
trap - EXIT로 해제.
더 알아볼 것
- mktemp + trap 표준 패턴
- ERR 신호 — 에러 시
- BASH_COMMAND로 어디서 종료됐나