【问题标题】:bash - redirecting of stdoutput and stderror does not catch all outputbash - stdoutput 和 stderror 的重定向不会捕获所有输出
【发布时间】:2009-06-12 18:36:19
【问题描述】:

我正在编写一些测试脚本,并希望捕获所有错误输出并将其写入错误日志以及所有常规输出并将其写入单独的日志。我正在使用形式的命令

cmd > output.file 2> error.file

我正在为其编写测试脚本的命令可能会导致分段错误。当命令 segfaults 时,bash 仍然会向终端输出分段错误。

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

有可能吗?一定是 bash 做的,因为两个输出流都被重定向了。

【问题讨论】:

    标签: bash io-redirection


    【解决方案1】:
    bash -c 'cmd >output.file 2>error.file' >bash_output.file 2>&1
    

    【讨论】:

    • 请注意,shell 之间的行为是不同的。 zsh 输出将其完全放到一个文件中,并且常规的“sh”将分段错误错误消息放在 stderr 中,用于出现段错误的进程,而 bash 似乎将其放在父 shell 的 stderr 流中。由于这个想法明显的不可移植性,因此请确保您知道您正在使用哪个 shell。
    • zsh *DOESN'T 完全将其输出到文件中。天哪,我需要学习如何打字。 :-P
    【解决方案2】:

    从 shell 的角度来看,我不认为段错误是程序输出的一部分。所以使用

    期待更可靠的输出

    http://en.wikipedia.org/wiki/Expect

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多