【问题标题】:How do I write a script to run multiple processes in the background and have additional commands run once each individual command completes?如何编写脚本以在后台运行多个进程并在每个单独的命令完成后运行其他命令?
【发布时间】:2011-07-01 11:09:02
【问题描述】:

我正在尝试在 bash 脚本中执行以下操作:

for x in a b c; do echo foo $x; sleep 5 & y=$! ; (wait $y && echo bar $x) & done

在不增加太多复杂性的情况下,这可能吗(上面的例子当然不起作用)?

编辑:

当然在现实中,echo foo $x; sleep 5 会例如复制一些大文件或编译一些大文件,而第二个操作将是依赖于第一个的操作。

【问题讨论】:

    标签: linux bash scripting


    【解决方案1】:

    也许我遗漏了一些东西,但是使用()s 并将& 放在整个子组命令上...

    for i in 1 2 3; do (echo $i; sleep 5; echo end $i)& done
    

    【讨论】:

    • 谢谢,是的,我也注意到了。如果有一种简单的方法可以按照我的问题中的建议同时等待不同的后台进程,我仍然会感兴趣。
    • 这基本上就是 ;&& 语法的用途。
    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 2015-08-04
    • 2017-05-04
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-11
    相关资源
    最近更新 更多