【发布时间】:2017-09-07 11:29:21
【问题描述】:
我这里有一个特殊的案例,可以总结如下:
我希望将整个错误/标准输出消息从我的脚本重定向到一个文件,但还有一个特定的行我想重定向到终端并将其重定向到文件。
这是代码:
exec &>test.log
echo "Check if this line is going to test.log"
echo "This should go to stderr" >> /dev/stderr
现在最后一行应该同时进入 stderr 和 test.log。
这可以在 bash 中以某种方式实现吗?
【问题讨论】:
-
我可以撤回我的重复标志吗?我链接到的帖子只有他回答问题所需的一半,所以它并不是真正的重复。
-
好的,我删除了关于副本的评论。我希望也能删除标志。
-
实际上该标志仍然存在,但现在我指定了不同的副本,您提出的重复信息已经消失。如果您建议的副本有用,可以将其添加到“这里已经有答案”框中(请告诉我)。
-
@tripleee:这个问题不是那个问题的重复。对“tee”的需求是一样的;最初我提出了这个解决方案。但这并没有解决他的问题,因为他的脚本开头有 exec 调用,所以 stderr 已经重定向到文件。所以“tee”只是用最后一行覆盖文件;控制台中看不到任何内容,并且文件中的早期条目丢失。还需要两件事(针对他的案例正确处理 exec)和 tee 的“-a”选项。如果没有这三件事(“tee”、“-a”和适当的 exec 处理他的案例),他就没有解决方案。