3

私は次の声明を持っています

 for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc; done

ただし、ファイル「out.asc」ではなく、すべての出力をコンソールに書き込み続けます。出力を画面ではなくファイルにリダイレクトする方法を教えてください。前もって感謝します!

4

4 に答える 4

4

wine が stderr に書き込んでいる可能性があるため、リダイレクトする必要があります。

for i in `cat i.txt`; do wine ~/run.exe $i.asc 2>> out.asc; done

演算子の2に注意してください2>>。これは stderr を意味します。

于 2011-04-28T16:45:33.193 に答える
4

stderr (2) を stdout (1) にリダイレクトしてみてください

for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>&1; done
于 2011-04-28T16:46:40.397 に答える
0

たぶん、あなたは標準出力とエラー出力の両方を持っています。>>とを使用し2>>て、両方の出力ストリームをファイルにリダイレクトします。

for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>> out.asc; done

オプションで、ソースを別のファイルにリダイレクトできます。

for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>> err.asc; done
于 2011-04-28T16:48:28.940 に答える
0

他の人があなたの実際の質問に答えました、私はファイルの行を読むためのより良いイディオムを示したいと思います。

それ以外の

for i in `cat i.txt`; do
  : do something with $i
done

試す

while IFS= read -r line; do
  : do something with "$i"
done < i.txt
于 2011-04-28T19:35:08.237 に答える