我一直在尝试编写符合POSIX标准的代码,并希望stdout
和stderr
使用tee获取日志文件和屏幕。
该程序运行正常,并做了它应该... 但系统提示不会出现,直到我再次回车。 我不确定为什么会这样。 有谁知道我怎么能避免这种情况发生?
rm mylog.txt
exec > >(tee -a mylog.txt)
exec 2>&1
echo food
echo bar
exit
答案 0 :(得分:1)
从未在这个exec >
的东西中看到你的语法...所以我无法解释你得到的东西(我说的不一样 - 这可能是你正在使用的shell特有的)。
您可以通过对脚本执行包装来避免出现此行为;这是如何:
#!/bin/bash
# removing even when non existing
rm -f mylog.txt
{
echo food
echo bar
# testing the stderr too:
ls -la non_existant_file
} 2>&1 | tee -a mylog.txt