複数のコマンドを入力にリダイレクト

複数のコマンドを入力にリダイレクト

複数のコマンドの出力を別のコマンドの入力にリダイレクトする正しい方法は何ですか?

例えば

$ command < (command2 | grep pattern)

ベストアンサー1

(疑わしい場合はbashを示します。)

パイプを作成(または既存の拡張)して、あるコマンドまたはパイプの出力を別のコマンドへの入力として使用できます。

command1 | command2
command1 | command2 | command3

複数のコマンド(パイプを含む)をサブシェルまたはリスト(グループコマンド)と組み合わせることができます。この組み合わせはパイプラインの最初の部分になります。

(command1; command2 | command3; command4) | command5
{command1; command2 | command3; command4;} | command5 # note the ; before }

もう一つの可能​​性は、「ここで文字列」(または「ここで文書」)です。

command2 <<< $(command1)

command2 <<EOT
First input line
$(command1)
Last input line
EOT

その他のケース

コマンドの置き換え出力がコマンドラインの一部である必要がある場合に使用します。つまり、あるコマンドが別のコマンドの出力を独自の引数として扱う必要がある場合:

echo $(date)

echoはechoの出力をdateコマンドラインに入力したかのように引数として扱います。

プロセスの置き換え他のプロセスの出力は、コマンドラインに引数として提供された(検索できない)ファイルの内容として表示されます。

grep bar <(echo $'foo\nbar\nbaz')

そうです。

echo $'foo\nbar\nbaz' > /path/to/file
grep bar /path/to/file

おすすめ記事