AND / OR列出命令分组,以异步操作符或“{cmd1&& cmd2;}&”结尾

时间:2015-08-11 15:48:12

标签: posix sh

我想在~/.xinitrc中并行执行许多命令。

这很容易通过POSIX sh语法归档:

cmd & cmd & ...

但是其中一些依赖项并按顺序运行,但每个序列并行运行。

我来了:

{ cmd1 && cmd2; } &
cmd3 &
{ cmd4 || cmd5; } &

在单个sh进程中执行cmd1cmd2是否从原始sh分叉?

我理解每个人的POSIX:

  • && - 和列表
  • & - 异步列表
  • { ...; } - 在当前环境中执行的复合列表

但是当这些语法单元一起使用时,不能推断出执行语义。

(cmd)是否等同于{cmd;} &

(...)语法(子shell)是否可以帮助我归档我的目标?

1 个答案:

答案 0 :(得分:1)

你的假设是正确的。

{ cmd1 && cmd2; } &

分叉一个新的shell,其中cmd1运行完成,如果成功,则cmd2(cmd)启动一个新的子shell,但在继续之前等待该shell完成。 { ...; } &( ... ) &相似;我不记得第二个是否为(...)&中的每一个启动了一个额外的流程,或者它是否可以在后台运行(...)的新流程。