我有一堆通用的清理代码,每当某个 bash 脚本退出时,无论它是正常退出还是被中断,都需要执行这些代码。我想我会使用trap "..." EXIT
伪信号来实现这一点。
除了一般的清理工作之外,还有一项特定的清理工作只有在脚本正常完成时才应该进行。我想我可以通过让“陷阱”块测试一个变量来触发它,如下所示:
#!/bin/bash
done=false;
trap "{
#generic cleanup code goes here.
if $done
then
#cleanup to be done only on completion goes here.
echo Test;
fi
}" EXIT
#main script goes here
done=true;
但是,这不起作用。运行以下代码将永远不会回显“测试”。在之后添加显式exit
调用done=true;
不会改变任何内容。我错过了什么?
干杯!