累计在退出时运行的陷阱工作列表
你有没有忘记添加 trap
来清理临时文件或在退出时做其他工作?
你有没有设置一个取消另一个的陷阱?
这段代码可以很容易地在退出一个项目时添加要完成的事情,而不是在代码中的某个地方添加一个大的 trap
语句,这可能很容易忘记。
# on_exit and add_on_exit
# Usage:
# add_on_exit rm -f /tmp/foo
# add_on_exit echo "I am exiting"
# tempfile=$(mktemp)
# add_on_exit rm -f "$tempfile"
# Based on http://www.linuxjournal.com/content/use-bash-trap-statement-cleanup-temporary-files
function on_exit()
{
for i in "${on_exit_items[@]}"
do
eval $i
done
}
function add_on_exit()
{
local n=${#on_exit_items[*]}
on_exit_items[$n]="$*"
if [[ $n -eq 0 ]]; then
trap on_exit EXIT
fi
}