如果子脚本失败,如何退出shell脚本的整个调用堆栈?

时间:2014-09-10 00:07:22

标签: bash shell exit

我有大约20-30个shell脚本集,用于执行整个一个大任务。包装器脚本主要调用高级任务脚本,但在内部这些脚本调用其他脚本,并且流以嵌套方式继续。

我想知道如果某个关键脚本失败,是否有办法退出整个调用堆栈。通常我运行exit 125命令,然后在调用者脚本中捕获它,依此类推,但我觉得有点复杂。是否有一个特殊的退出将中止整个调用堆栈?我不想使用kill命令来中止包装器脚本进程。

1 个答案:

答案 0 :(得分:0)

您可以使用主包装器脚本启动其自己的进程组中的每个子脚本,例如使用chpst -P

然后子脚本及其子节点可以通过发送KILL信号来杀死它们自己的进程组,这不会影响主包装器脚本。

我认为这不是一个坏主意,你现在正在做的是好方法(因为它使代码更容易理解)。