38234


_man 1 bash_ を読んでいて、腑に落ちない点があったので質問させていただきます。

_SHELL GRAMMAR > Compound Commands_ に記載されている  
**(list)** と **{ list; }** は、次のように書き換えられます。

[code]

    (echo hoge
    > echo huga)
    
    { echo hoge
    > echo huga; }
    
[/code]

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)


CC BY-SA 3.0
2017-09-27T08:47:46.480
38232
2017-09-27T12:07:59.860
2017-09-27T12:07:59.860
19110
question
bash
bashのリスト中に改行を入れても、マニュアルの文法仕様に沿っている？


Listの定義のうち、質問で引用されている部分の後に、以下の記述があります。

> A sequence of one or more newlines may appear in a list instead of a
> semicolon to delimit commands.


CC BY-SA 3.0
2017-09-27T09:04:50.893
38234
2017-09-27T09:04:50.893
4010
38232
answer