用于计算已用时间的Shell脚本

时间:2010-11-21 13:54:57

标签: bash time formatting

我正在尝试编写一个脚本来执行C程序,并在Unix中使用time命令测量执行时间。

脚本如下所示

cc /home/pop/Daa/abc.c 

r = `time /home/pop/Daa/./a.out`

echo "recursion" $r >> log.txt

cc /home/pop/Daa/xyz.c

d = `time /home/pop/Daa/./a.out `

echo "dynamic" $d >> log.txt

但是在执行脚本之后,log.txt文件只包含单词递归和动态。似乎缺少时间值。但是在命令行终端上执行time命令给出了以下输出

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

如何将此输出格式化为仅包含“实际”执行时间并写入日志文件?

2 个答案:

答案 0 :(得分:1)

为变量赋值时,等号周围不应有空格。例如:

r=`time /home/pop/Daa/./a.out`

如果您只想要“真实”时间,请使用grep

r=`time /home/pop/Daa/./a.out | grep real`

或在%e命令中使用time

r=`time -f '%e' /home/pop/Daa/./a.out`

答案 1 :(得分:1)

time的输出转到stderr。你必须redirect it

TIMEFORMAT=%R
r=$( { time /home/pop/Daa/./a.out; } 2>&1 )

你不能在等号周围留出空格。使用$()代替反引号是preferable,因为它更容易阅读,单引号没有混淆,并且更容易嵌套。