为什么我需要返回才能返回系统提示符?

时间:2016-08-25 05:38:54

标签: shell unix posix tee

我一直在尝试编写符合POSIX标准的代码,并希望stdoutstderr使用获取日志文件和屏幕。

该程序运行正常,并做了它应该... 但系统提示不会出现,直到我再次回车。 我不确定为什么会这样。 有谁知道我怎么能避免这种情况发生?

rm mylog.txt
exec > >(tee -a mylog.txt)
exec 2>&1
echo food
echo bar
exit

1 个答案:

答案 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