Bash - 重定向标准输出和标准错误输出无法捕获所有输出

4

我正在编写一些测试脚本,想要捕获所有的错误输出并将其写入错误日志,同时将所有常规输出写入另一个日志文件。 我使用的命令格式为

cmd > output.file 2> error.file

我正在为编写测试脚本的命令可能会导致分段错误而烦恼。 当命令发生分段错误时,bash仍然会在终端上打印出分段错误信息。

我希望这不会发生或与标准错误一起被重定向。

这是否可能? 这必须是bash所做的,因为两个输出流都被重定向了。

2个回答

11
bash -c 'cmd >output.file 2>error.file' >bash_output.file 2>&1

1
请注意,不同的shell之间行为是不同的。zsh会将其输出到文件中,而常规的“sh”会将分段错误消息放在分段错误进程的stderr中,而bash似乎会将其放在父shell的stderr流中。一定要非常确定您正在使用哪个shell,因为这个想法显然是不可移植的。 - Michael Trausch
zsh根本没有将其输出到文件中。天哪,我需要学会如何打字。:-P - Michael Trausch

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接