将'time ./a.out'的输出放到变量中

时间:2011-06-21 01:39:00

标签: bash variables

我用time命令执行程序(如“xxx $ time ./a.out”),输出如下,

real 0m7.250s
usr  0m10.395s
sys  0m0.026s

我想得到的是0和7.250,如0m7.250s。我试过“awk'{print $ 2}'”,但没有成功;没有输出。

PS:我尝试使用“>”将time命令输出到文件中,也没有成功。

2 个答案:

答案 0 :(得分:4)

time命令将其输出发送到标准错误,以免干扰正常的程序输出。您需要使用2>&1将其重定向到可以捕获的位置。

答案 1 :(得分:4)

尝试:

pax$ tm=$((time sleep 1) 2>&1 | awk '/^real/{print $2}') ; echo $tm
0m1.002s

(当然,用你自己的a.out命令代替sleep 1只是用来举例)。

它为time命令创建一个子shell,并确保将其标准错误发送到标准输出(time专门将其信息输出到标准错误,这样就可以了与程序的正常输出保持分开时间。)

awk命令捕获从real开始的行并输出第二个参数(时间)。