我正在使用以下命令,没有任何问题:
echo "some code" > example && somecommand example || othercommand example
但是当我想在背景中运行somecommand
和othercommand
时:
echo "some code" > example && somecommand example & || othercommand example &
我收到以下错误:
-bash: syntax error near unexpected token `||'
我该如何解决?
答案 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)
无法组合这些结构。 ||
和&&
运算符(显然)需要等待上一个命令完成才能检查它是否成功。