コマンドの出力を表示して次のコマンドに渡すにはどうすればよいですか? [コピー]

コマンドの出力を表示して次のコマンドに渡すにはどうすればよいですか? [コピー]

出力(STDOUT)を表示し、それを次のコマンドにパイプしたいと思います。 「tee」は結果を表示してファイルに書き込むことを知っていますが、ファイルに書き込むには別のコマンドにパイプしたいと思います。

例:

$ command1 --option1 --option2 | MAGICCOMMAND | jq -e '.returnCode'

「command1 --option1 --option2」と「jq -e...」の出力を取得します。

答え1

bashシェルでは、tee次のようにプロセス置換を使用できます。

command1 --option1 --option2 | tee >( jq -e '.returnCode' )

command1これにより、出力がに書き込まれ、tee標準入力だけでなく標準出力にもコピーされますjq

また、これを行うことができます

command1 --option1 --option2 | tee /dev/stderr | jq -e '.returnCode'

それからcommand1出力標準エラーストリーム、繰り返し出力をに送信しながらjq達成しようとする目標によって異なります。

答え2

| tee /dev/tty |ほとんどのシステムでは、標準入力をコンソールに書き込むと同時に、次のコマンドに標準出力に渡します。

時には/dev/stderr標準エラーに書き込むことを好むかもしれません。特にjqの場合はこれで十分です。

| jq 'stderr | ...' 

これstderr/0関数は入力を標準エラーに書き込みます。そしてそれを次のフィルタに渡します。ただし、オブジェクトをフォーマットするので(強調表示されずに圧縮される)、これは必要なものでもそうでない場合もあります。

関連情報