为什么在 &&(and) 之前使用 &(bg) 在 bash 脚本中给出错误

为什么在 &&(and) 之前使用 &(bg) 在 bash 脚本中给出错误

[[ -n $program ]] && echo "$program" && setsid $program "$arg" & && exit 0
给我“意外标记‘&&’附近的语法错误”

[[ -n $program ]] && echo "$program" && { setsid $program "$arg" & } && exit 0
工作正常

有人可以帮助我理解这里使用括号有什么区别吗

答案1

引用 Bash 手册页:

列表是由一个或多个管道组成的序列,由运算符;, &, &&, 或||,并且可选地由 ;, &, 或之一终止<newline>

因此我假设它的解析器将视为& &&语法错误。

相关内容