我想在脚本中显示命令的持续时间。延迟我想要的持续时间:12 minutes 04 seconds
或01 hours 15 minutes 02 seconds
。始终保持领先零。
我尝试了here找到的不同内容,但没有得到结果。
顺便说一下:这是我第一次尝试打击。答案 0 :(得分:1)
#!/bin/bash
DATE1=$(date +%s)
# ... your commands
DATE2=$(date +%s)
DIFF=$(awk -vdate1=$DATE1 -vdate2=$DATE2 'BEGIN{print strftime("%H hour %M minutes %S seconds",date2-date1,1)}')
echo $DIFF
时间转换为秒并存储在变量DATE1和DATE2中 前提条件DATE2> DATE1
DATE1=$(date +%s)
# ... your commands
DATE2=$(date +%s)
strftime 用于以秒为单位获取time-diff并进行格式化 1作为UTC标志
作为第3个参数传递strftime("%H hour %M minutes %S seconds",date2-date1,1)
答案 1 :(得分:0)
你可以使用time
可执行文件(不是内置的bash,因为外部程序具有格式选项-f
,并将时间作为[hours:]minutes:seconds
提供,我现在心情不大等一个小时来了解内置程序如何向我们显示小时:))和awk这样(使用示例sleep 2
):
/usr/bin/time -f "%E" sleep 2 2> >(
awk -F : '
{ if(FN>2) printf("%02d hours %02d minutes %02d seconds\n", $1, $2, $3)
else printf("%02d minutes %02d seconds\n", $1, $2)
}'
)
我们在这里使用/usr/bin/time
及其-f
选项。然后我们将stderr的输出管道传输到awk
,将字符串拆分为:
。 (时间写入stderr,因此我们需要2>
将stderr重定向到>( awk ... )
过滤器。
awk过滤器决定NF
所使用的printf
语句中的字段数。