0

プログラムを実行し、ファイルからのすべての入力をリダイレクトし、stdout のすべての出力をファイルにリダイレクトする単純な bash スクリプトがあります。

stdoutリダイレクトなしでそれを実行すると、プログラムのすべてのprintfが正しい順序で端末に出力されます。stdout のリダイレクトを配置すると、それらの一部が失われ、それらの順序が混乱するように見えます。

#!/bin/bash
./myprog < commands > scriptOUT.txt

ここで、myprog はプログラムの実行可能ファイルです。commands は、このプログラムが実行に必要とする入力を含むファイルであり、scriptOUT.txt は、最後にすべての stdout で作成されるファイルです (これは決して起こりません)。

なぜこうなった?それを回避する方法はありますか?

4

1 に答える 1

1

あなたの出力のいくつかはstderr同様に進んでいますstdoutか?を使用して両方を>&リダイレクトし、それが役立つかどうかを確認してください。stdoutstderr

#!/bin/bash
./myprog < commands >& scriptOUT.txt
于 2013-04-22T22:11:55.957 に答える