将标准错误捕获到bash中的变量中

时间:2009-06-12 01:15:02

标签: bash

我想将time命令的输出(写入标准错误)捕获到变量中。我知道这可以这样做:

    $ var=`time (mycommand &> /dev/null) 2>&1`
    $ echo "$var"
    real    0m0.003s
    user    0m0.001s
    sys     0m0.002s

最里面的重定向发送标准输出和mycommand的标准错误到/ dev / null,因为它不需要,最外层的重定向将标准错误发送到标准输出,以便它可以存储在变量中。

我的问题是我无法在shell脚本中使用它,但事实证明这是因为其他地方的错误。所以现在我已经开始写这个问题了,相反我会问,这是实现这个目标的最好方法还是你会采用不同的方式?

2 个答案:

答案 0 :(得分:8)

我要做的唯一改变是:

var=$(time (mycommand &> /dev/null) 2>&1)

如果shell支持它,$()命令语法优于两个原因:

  • 无需逃避反斜杠,
  • 您可以在不转义反引号的情况下嵌套命令。

差异说明:Bash Command Substition

答案 1 :(得分:1)

如果你真的不需要定时程序中的stdout或stderr,这是一个很好的方法,并且应该像任何其他方法一样有效。