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

在bash中将标准错误捕获到变量中,bash,Bash,我想将time命令的输出(写入标准错误)捕获到一个变量中。我知道可以这样做: $ var=`time (mycommand &> /dev/null) 2>&1` $ echo "$var" real 0m0.003s user 0m0.001s sys 0m0.002s $var=`time(mycommand&>/dev/null)2>&1` $echo“$var” 实0.003s 用户0m0.001s 系统0m0.002s 最里面的重定向

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

$ var=`time (mycommand &> /dev/null) 2>&1` $ echo "$var" real 0m0.003s user 0m0.001s sys 0m0.002s $var=`time(mycommand&>/dev/null)2>&1` $echo“$var” 实0.003s 用户0m0.001s 系统0m0.002s 最里面的重定向将标准错误发送到/dev/null,最外面的重定向将标准错误发送到标准输出,以便将其存储在变量中


我的问题是,我无法在shell脚本中实现这一点,但事实证明,这是因为其他地方有一个bug。现在我已经开始写这个问题了,取而代之的是,这是实现这一点的最好方法还是你会用不同的方法来实现它?

如果你真的不需要程序计时的stdout或stderr,这是一个很好的方法,应该和其他方法一样有效。

我唯一要做的改变是:

var=$(time (mycommand &> /dev/null) 2>&1)
如果shell支持,
$()
命令语法的优越性有两个原因:

  • 不需要逃避反斜杠
  • 可以嵌套命令而不转义反勾号
差异说明: