Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tee 为什么我需要返回到系统提示符?_Tee_Shell_Unix_Posix - Fatal编程技术网

Tee 为什么我需要返回到系统提示符?

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>有关。。。所以我无法解释你得到了什么(我得到的和

我一直在尝试编写与POSIX兼容的代码,并希望将
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的最后一位输出覆盖