Content #
要捕获shell脚本的退出,只需在trap命令后加上EXIT信号即可:
$ cat trapexit.sh
#!/bin/bash
#Testing exit trapping
#
trap "echo Goodbye..." EXIT
#
count=1
while [ $count -le 5 ]
do
echo "Loop #$count"
sleep 1
count=$[ $count + 1 ]
done
#
exit
$
$ ./trapexit.sh
Loop #1
Loop #2
Loop #3
Loop #4
Loop #5
Goodbye...
$
当脚本运行到正常的退出位置时,触发了EXIT,shell执行了在trap中指定的命令。如果提前退出脚本,则依然能捕获到EXIT: $ ./trapexit.sh Loop #1 Loop #2 Loop #3 ^CGoodbye… $ 因为SIGINT信号并未在trap命令的信号列表中,所以当按下Ctrl+C组合键发送 SIGINT信号时,脚本就退出了。但在退出之前已经触发了EXIT,于是shell会执行trap命令。
From #
Linux命令行与shell脚本编程大全