您是否曾经忘记添加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 }