cleanup(){
echo "Doing cleanup jobs."
[ -n "$tmpfile" ] && rm "$tmpfile"
}
trap cleanup EXIT
tmpfile=`mktemp /tmp/tmp.XXXXXXXX` || exit 1
echo "Press Ctrl-C to abort."
for i in one two three four five six seven eight nine ten; do
echo $i >> "$tmpfile"
sleep 1
done
cat "$tmpfile"
$ ./trap_exit.sh
Press Ctrl-C to abort.
one
two
three
four
five
six
seven
eight
nine
ten
Doing cleanup jobs.
$ ./trap_exit.sh
Press Ctrl-C to abort.
Doing cleanup jobs.
$ ls /tmp/tmp.*
ls: /tmp/tmp.*: No such file or directory