私は知っている
program1 | program2
と
program1 | tee outputfile | program2
しかし、program1 の出力を program2 と program3 の両方にフィードする方法はありますか?
tee
これは、プロセス置換を使用して行うことができます。
program1 | tee >(program2) >(program3)
の出力は、program1
内部( )
にあるもの、この場合はとにパイプさprogram2
れprogram3
ます。
bash
マニュアルには、名前付きパイプまたは名前付きファイル記述子のいずれかを使用して構文をエミュレートする方法が記載>(...)
されているため、に依存したくない場合はbash
、スクリプトで手動で行うことができます。
mknod FIFO
program3 < FIFO &
program1 | tee FIFO | program2
wait
rm FIFO
いつでも program1 の出力をファイルに保存してから、それを program2 および program3 の入力にフィードすることができます。
program1 > temp; program2 < temp; program3 < temp;