如何在shell脚本中将时差存储在两个变量中

时间:2016-02-17 08:49:15

标签: shell time

脚本如下:

starttime=`date +"%T"`

echo $starttime

`sleep 2s`

endtime=`date +"%T"`

echo $endtime

totaltime=$(expr $endtime - $starttime)

echo "$totaltime"

我想从$endtime中减去$starttime并希望显示时差

但每当我运行它时;

显示此错误

  

“expr:非数字参数”

2 个答案:

答案 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_sendtime_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命令的输入。