我正在使用bash来编译c ++和Java程序。 我需要使用时间添加的数据,“真实”,“用户”,“ Sys”。 即使我使用var = $(compile)来获取输出,它也没有显示任何内容。
有没有一种方法可以获取时间的溢出数据?
编辑:
我正在使用Proccess在Java上运行bash,并使用BufferReader读取InputStream。
答案 0 :(得分:1)
您可以获得完整的输出time echo "hi"
,并将其保存到变量中:
stats=$({ time echo "hi"; } 2>&1)
或文件:
{ time echo "hi"; } >mylogfile.txt 2>&1
此处的大括号语法可让bash知道所需的实际信息。因为时间是bash中的保留字(例如if
或while
),并且是内置的,所以不带花括号重定向stdout
或stderr
不会重定向输出来自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,然后从时间获取输出。