在 tcsh 中,如何分叉多个 shell 命令,等到它们全部完成,然后再执行另一个命令?

在 tcsh 中,如何分叉多个 shell 命令,等到它们全部完成,然后再执行另一个命令?

我想要从 tcsh 命令行执行以下操作,最好用一行:

build_cmd1 &
build_cmd2 &
build_cmd3 &
wait until all parallel build commands finish
regression_cmd

也就是说,我想分叉一堆构建命令,阻塞直到它们退出,然后运行另一个命令。我想从 tcsh 命令行执行此操作。

答案1

::检查手册页::

它看起来像 csh 和衍生产品支持wait,因此请考虑类似

% cmd1 &; cmd2 &; cmd3 &; wait; thing_to_do_after

或者因为&&and||运算符短路,你可以使用

% (cmd1 &; cmd2 &; cmd3 &) && thing_to_do_after

仅有的如果您确定子 shell 的退出状态( true 表示使用&&, false 表示使用||)。

如果您希望等待不受先前启动的后台任务的影响,请将其放入子 shell ( ()) 中,如下所示:

% (cmd1 &; cmd2 &; cmd3 &; wait) && thing_to_do_after

或者

% (cmd1 &; cmd2 &; cmd3 &; wait; thing_to_do_after)

//请注意,我已经很久没有使用过 tcsh 了……

相关内容