我正在寻找一种方法来清理混乱时,我的顶级脚本退出。
特别是如果我想使用set -e
,我希望后台进程在脚本退出时会死掉。
最佳答案
要清理一些混乱,可以使用trap
。它可以提供特定信号到达时执行的内容列表:
trap "echo hello" SIGINT
但也可以用来执行一些东西,如果外壳退出:
trap "killall background" EXIT
它是一个内置的,所以
help trap
将为您提供信息(与bash一起使用)。如果你只想杀死后台工作,你可以trap 'kill $(jobs -p)' EXIT
注意使用single
'
,防止外壳立即替换$()
。关于shell - 当我的Shell脚本退出时,如何杀死后台进程/作业?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34191514/