我有大约20-30个shell脚本集,用于执行整个一个大任务。包装器脚本主要调用高级任务脚本,但在内部这些脚本调用其他脚本,并且流以嵌套方式继续。
我想知道如果某个关键脚本失败,是否有办法退出整个调用堆栈。通常我运行exit 125
命令,然后在调用者脚本中捕获它,依此类推,但我觉得有点复杂。是否有一个特殊的退出将中止整个调用堆栈?我不想使用kill
命令来中止包装器脚本进程。
答案 0 :(得分:0)
您可以使用主包装器脚本启动其自己的进程组中的每个子脚本,例如使用chpst -P
。
然后子脚本及其子节点可以通过发送KILL信号来杀死它们自己的进程组,这不会影响主包装器脚本。
我认为这不是一个坏主意,你现在正在做的是好方法(因为它使代码更容易理解)。