我正在寻找一种方法来清理混乱时,我的顶级脚本退出。
特别是如果我想使用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/

10-15 01:25