我用time命令执行程序(如“xxx $ time ./a.out”),输出如下,
real 0m7.250s
usr 0m10.395s
sys 0m0.026s
我想得到的是0和7.250,如0m7.250s。我试过“awk'{print $ 2}'”,但没有成功;没有输出。
PS:我尝试使用“>”将time命令输出到文件中,也没有成功。
答案 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
开始的行并输出第二个参数(时间)。