获取bash中time(1)的输出

时间:2018-08-07 19:24:56

标签: bash time compilation

我正在使用bash来编译c ++和Java程序。 我需要使用时间添加的数据,“真实”,“用户”,“ Sys”。 即使我使用var = $(compile)来获取输出,它也没有显示任何内容。

有没有一种方法可以获取时间的溢出数据?

编辑:

我正在使用Proccess在Java上运行bash,并使用BufferReader读取InputStream。

2 个答案:

答案 0 :(得分:1)

您可以获得完整的输出time echo "hi",并将其保存到变量中:

stats=$({ time echo "hi"; } 2>&1)

或文件:

{ time echo "hi"; } >mylogfile.txt 2>&1

此处的大括号语法可让bash知道所需的实际信息。因为时间是bash中的保留字(例如ifwhile),并且是内置的,所以不带花括号重定向stdoutstderr不会重定向输出来自time。为此,我们需要将命令的所有输出分组在一起,然后将其重定向。

但是,如果您只想要定时信息,我们可以将命令的信息重定向到空白/dev/null并仅保留time的输出。我们可以将其保存到变量中:

stats=$({ time echo "hi" 1>/dev/null 2>&1; } 2>&1)

或文件:

{ time echo "hi" 1>/dev/null 2>&1; } 2>mylogfile.txt

答案 1 :(得分:1)

时间输出转到错误输出,因此您可以在过程中使用getErrorStream,然后从时间获取输出。