&&(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のマニュアルページを引用すると、次のようになります。

リストは、以下で構成される 1 つ以上のパイプのシーケンスです。一つ演算子;、、、または、およびオプションで、またはいずれか&で終了します。&&||;&<newline>

したがって、パーサーがこれを& &&構文エラーとして扱うと仮定します。

関連情報