脚本如下:
starttime=`date +"%T"`
echo $starttime
`sleep 2s`
endtime=`date +"%T"`
echo $endtime
totaltime=$(expr $endtime - $starttime)
echo "$totaltime"
我想从$endtime
中减去$starttime
并希望显示时差
但每当我运行它时;
显示此错误
“expr:非数字参数”
答案 0 :(得分:0)
看起来您必须测量shell脚本(或其中的一部分)的已用时间。在这种情况下,我会以这种方式使用内部变量SECONDS:
SECONDS=0
... your stuff here...
echo "Elapsed: ${SECONDS}"
# and/or... if you (also) want HH:MM:SS
hh=$(( SECONDS / 3600 ))
mm=$(( ( SECONDS / 60 ) % 60 ))
ss=$(( SECONDS % 60 ))
printf "Elapsed: %02d:%02d:%02d\n", $hh $mm $ss
答案 1 :(得分:0)
继续发表评论。如果您已将starttime_s
和endtime_s
与$(date +%s)
一起保存并取差endtime_s - starttime_s
(存储在tmdiff
中),那么您现在可以在几秒钟内获得差异。你的开始时间很简单:
date -d @${starttime_s}
(您可以使用echo $(date -d @${starttime_s})
输出,并在最后添加您选择的任何格式。例如echo $(date -d @${starttime_s} +%yourfmt)
)
您的结束时间是:
endtime=$((starttime_s + tmdiff))
date -d @${endtime}
(或只是)
date -d @${endtime_s}
您只是使用date -d
命令,该命令将给定时间作为date
命令的输入。