我想要从 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 了……