根据条件将返回代码传递给父shell

根据条件将返回代码传递给父shell,shell,background,wrapper,wait,exit-code,Shell,Background,Wrapper,Wait,Exit Code,我在一个包装器中运行一个包装器,其中最里面的一个拥有我的所有命令 像这样 L4.ksh # topmost wrapper L3.ksh L2.ksh Nohup command > log 2>&1& # label that c1 Nohup command > log 2>&1& # c2 wait

我在一个包装器中运行一个包装器,其中最里面的一个拥有我的所有命令 像这样

 L4.ksh # topmost wrapper 
    L3.ksh 
        L2.ksh 
           Nohup command > log 2>&1& # label that c1
           Nohup command > log 2>&1& # c2
           wait                      # w1
           Nohup command > log 2>&1& # c3


        L2_1.ksh
           Nohup command > log 2>&1& # label that c4
           Nohup command > log 2>&1& # c5
           wait                      # w2
           Nohup command > log 2>&1& # c6
我想做的是捕获C6和C3的退出状态。当然我会坚持一个rc=$?在它下面。好的,就这么做了。 下一步-我希望当所有命令L2都完成时,查看C3的状态,它是L2中最后一个nohup,L2的退出代码应该是L2中的所有操作完成后的C3。注:这些C1、C2等均并行运行。 当L2完成时,我将以相同的方式执行L2_1,仅在L2完全完成后执行,即其中的所有进程都完成(因此C3可能已经完成,C1 C2仍在运行) -但所有C都应符合要求标准) 最后,如果L2和L2_1的状态代码均为0,则L3应返回0,否则L3应返回非零状态代码

如果我把钱放进去?执行L2系列(C3和C6)中的最后一个命令,然后放置wait,然后退出$rc

            C3
            rc=$?
            wait
            exit $rc
对于L2和L2_1两者,然后对状态代码L3执行条件切换-这是否可以达到目的?或者怎样才能做到最好 泰 萨姆

感谢Dogbane为您回复捕获个人PID。问题是我不知道发射了多少炮弹。ksh是运行时生成的shell,包含命令 所以问题是如何收集所有PID。我必须启动一些计数器?跟踪。
当所有后台任务在shell中完成工作后,是否有更好的方法来确定状态,然后标记上次启动的后台任务的退出状态?

我建议您捕获PID并等待它们,如下所示:

L2.ksh 
   nohup command > log 2>&1& # label that c1
   c1_pid=$!

   nohup command > log 2>&1& # c2
   c2_pid=$!

   nohup command > log 2>&1& # c3
   c3_pid=$!

   # wait for c1 and c2 to finish.
   wait $c1_pid $c2_pid   

   # wait for c3 to finish   
   wait $c3_pid
   exit $?

你好,谢谢你的回复。我更新了这个问题,并在上面加了一条注释,而不是把它放在评论中,因为它并不突出,而且很难阅读。