パイプラインは単純なコマンドで構成されていますか?

パイプラインは単純なコマンドで構成されていますか?

Bashリファレンスマニュアルから

パイプラインは一連です簡単なコマンド|制御演算子の1つに分けられます|&

POSIX 2013で

パイプラインは1つ以上のシーケンスです。注文する制御演算子で区切られます|

Bashに|&

ただし、これはパイプラインのコンポーネントコマンドです。

  • 簡単なコマンドまたは
  • どのコマンド(単純、再パイプ、リスト、複合、関数)?

Bashでは、次のことができます。

$ for f in $(ls *); do echo $f; done | cat

ただし、パイプラインの最初のコンポーネントコマンドは単純ではなく複雑です。

答え1

Bash 4.4.5のマニュアルには、パイプラインコンポーネントを説明するときに「単純」という単語は含まれていません。あなたが言う「簡単な命令」はオタナミスかもしれませんし、昔の遺物かもしれません。

それbash2014年4月管理者によって修正されました、現在の内容は次のとおりです。

パイプは、制御演算子またはで|区切られた1つ以上のコマンドシーケンスです|&

パイプは、明らかに単純なコマンドまたは単純でないコマンド(for複合コマンドであるサブシェルやループなど)で構成できます。

答え2

Bash マニュアル ( man bash) はパイプ記述に単純という言葉を含んでいません。すべてのbash-${version}.tar.gzファイルをインポートこのウェブサイトから、解凍してファイルを確認してください。bash-${version}/doc/bash.1このファイルは bash 各バージョンのユーザーマニュアルです。

この単語を含むすべてはファイルsimpleですbashref。上記のbashrefマニュアルの4.3より前のバージョンのブランチの単語bash-${version}/doc/bashref.pdfを含む上記と同じダウンロードと拡張ファイルを読みます。simple3.2.2 Pipelines

3.2.2パイプラインパイプラインは「|」または、「|&」で区切られた一連の単純なコマンドです。

bashrefにこれらの単語が含まれているからといって、複雑なコマンド(「単純」とは反対)が何らかの方法でパイプライン(パイプライン{…} if…then… while…do…や他のパイプラインを含む)から除外されるわけではありません。

この表現は単純な誤字であるため、結論を導くために使用してはいけません。

関連情報