该time
命令返回这样的表?
real 0m1.607s
user 0m0.154s
sys 0m0.032s
我在 shell 脚本中运行此程序。处理time
输出的最简单方法是什么,以便获得一个$RUNTIME
保存用户 + 系统毫秒数总和的变量?
答案1
如果您需要使用 bashtime
内置函数,我会使用以下命令:
a=$(echo $( TIMEFORMAT="%3U + %3S"; { time your_command; } 2>&1) "*1000" | bc -l)
例子:
a=$(echo $( TIMEFORMAT="%3U + %3S"; { time sleep 1; } 2>&1) "*1000" | bc -l)
echo $a
2.000
a=$(echo $( TIMEFORMAT="%3U + %3S"; { time sudo hdparm -t -T /dev/sda 2>&1 >/dev/null; } 2>&1) "*1000" | bc -l)
echo $a
2302.137
答案2
做这个
使用以下脚本运行您的命令,替换your_command
。
$ ALL_TIME=`(time your_command) 2>&1 | grep -E "user|sys" | sed s/[a-z]//g`
现在变量 ALL_TIME 存储两个值:`
$ echo $ALL_TIME
00.001 00.003
现在您需要汇总值。使用下面的脚本
不要忘记设置运行时间设为零。
$ RUNTIME=0
$ for i in $ALL_TIME; do RUNTIME=`echo "$RUNTIME + $i"|bc`; done
$ echo $RUNTIME
.004