Tee 为什么我需要返回到系统提示符?
我一直在尝试编写与POSIX兼容的代码,并希望将Tee 为什么我需要返回到系统提示符?,tee,shell,unix,posix,Tee,Shell,Unix,Posix,我一直在尝试编写与POSIX兼容的代码,并希望将stdout和stderr添加到日志文件和屏幕中 该程序运行正常,并执行它应该执行的操作。。 但是直到我再次点击回车键,系统提示才会出现。 我不知道为什么会这样。 有人知道我如何避免这种情况发生吗 rm mylog.txt exec > >(tee -a mylog.txt) exec 2>&1 echo food echo bar exit 从未见过您的语法与此exec>有关。。。所以我无法解释你得到了什么(我得到的和
stdout
和stderr
添加到日志文件和屏幕中
该程序运行正常,并执行它应该执行的操作。。
但是直到我再次点击回车键,系统提示才会出现。
我不知道为什么会这样。
有人知道我如何避免这种情况发生吗
rm mylog.txt
exec > >(tee -a mylog.txt)
exec 2>&1
echo food
echo bar
exit
从未见过您的语法与此
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
从未见过您的语法与此
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
我认为这根本无法解释另一个_bug看到了什么。只是想帮助。。。用锤子而不是螺丝刀钉钉子会有帮助的。谢谢你们帮助我稍微了解一下我把事情搞砸了(很多)。我将做出建议的更改。我认为这根本无法解释另一个_bug看到了什么。只是想帮助。。。用锤子而不是螺丝刀钉钉子会有帮助的。谢谢你们帮助我稍微了解一下我把事情搞砸了(很多)。我将进行建议的更改。POSIX代码是否使用进程替换?他们什么时候添加的?除了非POSIX之外,进程替换可能是问题的原因。它有点薄。它可能是在不等待
tee
进程首先退出的情况下退出shell,导致提示被teePOSIX代码中带有进程替换的最后一位输出覆盖?他们什么时候添加的?除了非POSIX之外,进程替换可能是问题的原因。它有点薄。它可能在不等待tee
进程首先退出的情况下退出shell,导致提示被tee的最后一位输出覆盖