我想计时读取 bash 历史并将结果放入变量中。不幸的是,time
(这是一个 shell 关键字)将结果打印到stderr
,并且显然stderr
从 shell 关键字重定向与重定向常规命令输出的工作方式不同。换句话说,
foo=$(time history -r 2>&1)
不起作用(foo
变量为空,输出打印到终端)。如何捕获time
关键字的输出?
注意:由于history
是 shell 内置命令,我无法使用外部time
命令(即/usr/bin/time
) - 我必须time
在 bash 中使用关键字。
答案1
您可以使用以下语法:
foo=$((time history -r) 2>&1)
将命令放在 a 中()
并将其重定向stderr
到stdout
例子:
$ foo=$((time history -r) 2>&1)
$ echo $foo
real 0m0.001s user 0m0.000s sys 0m0.000s
$