从单个时间命令获取两个输出

时间:2014-04-30 10:44:39

标签: linux macos bash time

好的,这就是我想要做的事情:

  • 执行命令,并同时计时(使用time
  • 获取其输出
  • 过去的时间

到目前为止我的代码是

for filepath in $files
do
(
output=$(time $filepath &>1)
echo ${output}
)
done

但是,每个命令仍会将其时间输出到屏幕,$output包含命令的输出。

任何想法如何获得它们?

2 个答案:

答案 0 :(得分:2)

如果指定了time选项,则

stderr将其输出写入<file>-o <file>(受GNU和FreeBSD时间支持)。所以我认为你不能避免使用(临时)文件来实现目标。您可以使用mktemp命令在shell中安全地创建临时文件。

答案 1 :(得分:1)

你必须抓住stdin和stdout。为此,基于Is there a way to redirect time output to file in Linux中的解决方案,我会说:

{ time command ; } 2>&1
                   ^^^^
                   redirect stderr to stdin

所以你举个例子:

$ var=$({ time echo 1 ; } 2>&1 )

$ echo "$var"
1

real    0m0.000s
user    0m0.000s
sys     0m0.000s