
ビルドジョブのすべての出力をキャプチャして送信しようとしますmyprogram
。一部しかキャプチャできないようです。これが私が試していることです:
make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" | myprogram &2 > 1
私も次のことを試しました。
make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" &2 > 1 | myprogram
stdout
基本的に私はすべてを送り、それで何かをしたいと思います。現在は出力の一部だけをキャプチャし、残りの部分は画面に表示されます。すべてを他のプログラムにどのように転送しますか?
答え1
2つのコマンドがあるので、次のようにすることをお勧めします。
{ make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64"; } 2>&1 | myprogram
または
( make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" ) 2>&1 | myprogram
出力がパイプに渡されない場合は、シェルが両方の呼び出しの出力を1つにリダイレクトするように上記のmake clean
2つのいずれかを使用する必要があります。make
答え2
すべてのコマンドのSTDERRをSTDOUTにリダイレクトする必要があります。その後、すべてをに転送できますmyprogram
。
( make clean 2>&1 && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64" 2>&1 ) | myprogram
答え3
(make clean && make DISABLE_ID3TAG=1 CFLAGS="-O2 -DNDEBUG -W64") 2>&1 | myprogram
答え4
myprogram の複雑さに応じて、make 操作を myprogram に渡して stdout と stderr を別々のストリームとして読み取ることもできます。
私のプログラムがどれほど複雑になりたいかによって異なります。
最大の利点は、stdoutとstderrを一緒にまとめることなく独立して処理できることです。