在后台运行命令时使用或运算符

时间:2018-01-22 13:06:05

标签: bash

我正在使用以下命令,没有任何问题:

echo "some code" > example && somecommand example || othercommand example 

但是当我想在背景中运行somecommandothercommand时:

echo "some code" > example && somecommand example & || othercommand example & 

我收到以下错误:

-bash: syntax error near unexpected token `||'

我该如何解决?

2 个答案:

答案 0 :(得分:1)

如果您希望在后台运行完整的list of commands,可以group them作为复合命令{ cmd1 || cmd2; }(cmd1 || cmd2),然后在后台运行该复合命令:< / p>

{ echo "some code" > example && somecommand example || othercommand example; } &

(echo "some code" > example && somecommand example || othercommand example) &

请注意,您无法在后台运行命令使用&& / ||运算符(bash man,Lists section)等待它们:

  

如果命令由控制操作符&终止,则shell在子shell中异步执行命令。这称为在后台执行命令。 shell不等待命令完成,返回状态为0(true)。

要等待后台进程,可以使用wait builtin命令。

答案 1 :(得分:0)

无法组合这些结构。 ||&&运算符(显然)需要等待上一个命令完成才能检查它是否成功。