我有以下声明
for i in `cat i.txt`; do wine ~/run.exe $i.asc >> out.asc; done
但它继续将所有输出写入控制台而不是文件'out.asc'。你可以帮我将输出重定向到文件而不是屏幕。提前谢谢!
答案 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