すべての出力を別のプロセスにストリーミングする方法は?

すべての出力を別のプロセスにストリーミングする方法は?

次のBashスクリプトを使用してください3-output-writer.sh

echo A >&1
echo B >&2
echo C >&3

もちろん、Bashは3番目の出力ストリームで何をすべきかわからないため、. 3-output-writer.sh実行時にエラーが発生します。3: Bad file descriptorしかし、簡単に行うことができ、. 3-output-writer.sh 3>file.txtBashは満足するでしょう。

しかし、問題は、これら3つを同時に使用できるように、これらすべてを他のプロセスにどのようにリンクするかです。たとえば、3つの名前付きパイプを作成する以外に他の方法はありますか?

mkfifo pipe1 pipe2 pipe3  # prepare pipes
. 3-output-writer.sh 1>pipe1 2>pipe2 3>pipe3 &  # background the writer, awaiting readers
3-input-reader pipe1 pipe2 pipe3  # some sort of reader, careful not to block
rm pipe1 pipe2 pipe3

ベストアンサー1

おすすめ記事