Ensuring Cleanup Runs on Exit
Ensuring Cleanup Runs on Exit
The pseudo-signal EXIT (or 0) runs when the shell exits for any reason (normal finish, exit call, or set -e abort):
TEMP_DIR=$(mktemp -d)
trap 'rm -rf "${TEMP_DIR}"' EXIT
# Even if a command fails below with set -e, TEMP_DIR is guaranteed to be deleted!
curl -sS https://example.com/data.tar.gz | tar -xz -C "$TEMP_DIR"