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

Ros*_*ers 6 tcsh

我想从 tcsh 命令行执行以下操作,最好在 1 行中:

build_cmd1 &
build_cmd2 &
build_cmd3 &
wait until all parallel build commands finish
regression_cmd
Run Code Online (Sandbox Code Playgroud)

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

dmc*_*ten 4

::检查手册页::

看起来像 csh 和衍生品支持wait,所以考虑类似

% cmd1 &; cmd2 &; cmd3 &; wait; thing_to_do_after
Run Code Online (Sandbox Code Playgroud)

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

% (cmd1 &; cmd2 &; cmd3 &) && thing_to_do_after
Run Code Online (Sandbox Code Playgroud)

前提是您确定子 shell 的退出状态( true 表示 use &&, false 表示 use ||)。

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

% (cmd1 &; cmd2 &; cmd3 &; wait) && thing_to_do_after
Run Code Online (Sandbox Code Playgroud)

或者

% (cmd1 &; cmd2 &; cmd3 &; wait; thing_to_do_after)
Run Code Online (Sandbox Code Playgroud)

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