bashのリスト中に改行を入れても、マニュアルの文法仕様に沿っている?
man 1 bash を読んでいて、腑に落ちない点があったので質問させていただきます。
SHELL GRAMMAR > Compound Commands に記載されている
(list) と { list; } は、次のように書き換えられます。
(echo hoge > echo huga) { echo hoge > echo huga; }
Listの定義はマニュアルによると
「1つ以上のパイプラインを;,&,&&,||で区切り、最後に;,&,改行を付けたもの」
とあります。
Lists
A list is a sequence of one or more pipelines separated by one of the operators ;, &, &&, or ||, and optionally terminated by one of ;, &, or newline.
とすると、先の例は改行でパイプラインを区切っているため、マニュアルの仕様に則ると (list; list)
{ list; list; } となり文法エラーとなるはずです。
ですが、実際にはきちんと動作しているので文法的には正しいことになります。
これはマニュアルと実際の動作、どちらが正しいのでしょうか?
- 確認環境
CentOS 7.4
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)
Mac OSX 10.11.6
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)