0

我需要下载两个项目,即A和B,最终结果是B项目的构建,但它只能在安装了项目A的情况下构建。

所以我应该完成的任务如下:

  1. 下载一个
  2. 下载 B
  3. 构建 A,然后安装 A
  4. 构建 B,然后安装 B

1和2可以同时运行,2和3可以同时运行,

传统的编程方式是:

1 && 3
2 && 4

有没有更好的shell编程方法,可以更快地完成?

( (1 && 3 )  & 2 )  && 4    // is there possible? or will this be quicker than the former one?

那么让这些任务同时运行的方法是什么?

4

2 回答 2

1

您可以使用传统方式,将每个 &&-list 放在后台(感谢 William 为我指出正确的依赖项):

1 && 3 &
2 && wait && 4

首先,我们1 && 3在后台运行列表。作业 3 只会在作业 1 成功完成后开始。

接下来,在后台启动一个新列表。此列表运行作业 2,如果成功,则调用wait,它将等待所有后台作业完成。(我不太清楚确切的顺序,但它似乎不会等待它所属的后台作业。这很好,因为你会遇到死锁的情况,即作业正在等待自己完成. 更新:第二个列表必须在前台运行,以便wait命令将后台命令视为后台作业。)作业 1、2 和 3 全部完成后,wait成功完成,作业 4 开始。

于 2012-09-05T21:46:09.787 回答
0

将它们放在后台,然后使用等待:

1&
2&
wait
3&
4&
wait

如果你给 wait 一个 PID 或作业规范,那么它会给你逻辑的退出状态。

于 2012-09-05T21:31:56.093 回答