问题:
我有一个我一直在编写的 shell 程序,但我不知道如何确保它trap
在最后被捕获以进行清理,或者由于某些命令中的错误,它会以任何一种方式进行清理。
这是代码:
################################### Successful exit then this cleanup ###########################################################3
successfulExit()
{
IFS=$IFS_OLD
cd "$HOME" || { echo "cd $HOME failed"; exit 155; }
rm -rf /tmp/svaka || { echo "Failed to remove the install directory!!!!!!!!"; exit 155; }
}
###############################################################################################################################33
####### Catch the program on successful exit and cleanup
trap successfulExit EXIT
问题:
我怎样才能trap
只trap EXIT
在程序完成时制作?
这是完整的脚本:
进入
EXIT
陷阱时,$?
包含退出状态。这与您$?
在另一个 shell 中调用此脚本后发现的值相同:传递给的参数exit
(截断到范围 0-255)或前面命令的返回状态。在由于 退出的情况下,set -e
是命令的返回状态触发了隐式exit
.通常您应该
$?
以相同的状态再次保存并退出。