私は次の声明を持っています
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc; done
ただし、ファイル「out.asc」ではなく、すべての出力をコンソールに書き込み続けます。出力を画面ではなくファイルにリダイレクトする方法を教えてください。前もって感謝します!
wine が stderr に書き込んでいる可能性があるため、リダイレクトする必要があります。
for i in `cat i.txt`; do wine ~/run.exe $i.asc 2>> out.asc; done
演算子の2に注意してください2>>
。これは stderr を意味します。
stderr (2) を stdout (1) にリダイレクトしてみてください
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc 2>&1; done
たぶん、あなたは標準出力とエラー出力の両方を持っています。>>
とを使用し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
他の人があなたの実際の質問に答えました、私はファイルの行を読むためのより良いイディオムを示したいと思います。
それ以外の
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