bash输出到文件

时间:2011-04-28 16:43:01

标签: linux bash wine

我有以下声明

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

但它继续将所有输出写入控制台而不是文件'out.asc'。你可以帮我将输出重定向到文件而不是屏幕。提前谢谢!

4 个答案:

答案 0 :(得分:4)

可能是葡萄酒正在写给stderr,所以你需要重定向:

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

注意2>>运算符中的 2 ,这意味着stderr。

答案 1 :(得分:4)

尝试将stderr(2)重定向到stdout(1)

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

答案 2 :(得分: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

答案 3 :(得分: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