パイプの後にコマンドグループが来ると、正確に何が起こりますか?

パイプの後にコマンドグループが来ると、正確に何が起こりますか?

このような表現を見て、command1 | {command2;command3;command4}それが実際に何を意味するのか気になります。パイプ記号も​​知っており、{...}メインシェルの中かっこ内でコマンドを強制的に実行することも知っていますが、その組み合わせが何を意味するのか混乱しています。

ベストアンサー1

パイプラインのさまざまな部分がどれほど複雑であるかは重要ではありません。必要に応じて、通常は別々のスクリプトで視覚化できます(特に、bashパイプラインの各部分がサブシェルで実行されるようなシェルではさらにそうです)。

スクリプト

command2
command3
command4

...どの(名目上、コマンドがサブシェルで実行されていないという事実{ command2; command3; command4; }に関係なく)、変換された入力は実行で提供されます。{ ...; }

command1

最初のスクリプトの3つのコマンドが実行する操作に応じて、1つ以上の入力を使用できます。1つcommand1以上の出力が生成されると、その出力はパイプラインの次の部分または端末のどこかに移動されます。または、パイプ出力がリダイレクトされます。

おすすめ記事