如何在bash中添加两个时间输出
我想用bash计算几个命令所花费的平均时间. time命令的输出是min:sec.milisec.
我不知道如何在bash中添加这种输出,最后计算平均值. 我试图用日期转换输出,但输出是“日期:无效日期`0:01.00’”. 解决方法
这是一个三部分答案
第一部分 首先,使用TIMEFORMAT变量仅输出经过的秒数.然后你可以直接添加它 来自man bash
这是一个仅输出精度为0的秒的例子,即没有小数点.阅读第三部分为什么这很重要. TIMEFORMAT='%0R'; time sleep 1 1 第二部分 第二,我们如何捕捉时间的输出?这实际上有点棘手,这里是你如何通过上面的命令捕获时间 TIMEFORMAT='%0R'; time1=$( { time sleep 1; } 2>&1 ) 第三部分 我们如何将时间加在一起并获得平均值? 在bash中,我们使用$(())构造来进行数学运算.请注意,bash本身不支持浮点,因此您将进行整数除法(因此精度为0.)这是一个脚本,它将从两个命令中捕获时间并输出每个时间及其平均值 #!/bin/bash TIMEFORMAT='%0R' time1=$( { time sleep 1; } 2>&1 ) time2=$( { time sleep 4; } 2>&1 ) ave=$(( (time1 + time2) / 2)) echo "time1 is $time1 | time2 is $time2 | average is $ave" 产量 time1 is 1 | time2 is 4 | average is 2 如果整数除法对你来说是非启动的并且你想要精度,只要你不介意调用外部二进制bc,你就可以很容易地做到这一点. #!/bin/bash TIMEFORMAT='%3R' time1=$( { time sleep 1; } 2>&1 ) time2=$( { time sleep 4; } 2>&1 ) ave=$( bc <<<"scale=3; ($time1 + $time2)/2" ) echo "time1 is $time1 | time2 is $time2 | average is $ave" 产量 time1 is 1.003 | time2 is 4.003 | average is 2.503 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |