一个可以计算时间的脚本

自娱自乐,练习一下函数的运用

输入一个时间可以计算出这个时间距今天已经过去了多久,或者还需要多久才能到达。

#!/bin/bash
#
read -p "please enter your datetime:(YYYYMMDD):" time
[ $time == 'q' ] || [ $time == 'Q' ] && echo "quiting..." && exit 0
echo $time |grep -E '[0-9]{8}' &> /dev/null
tt=$?

until [ $tt -eq 0 ]; do
    echo "error input;"
    read -p "please enter your datetime:(YYYYMMDD):" time
    [ $time == 'q' ] || [ $time == 'Q' ] && echo "quiting..." && exit 0
    echo $time |grep -E '[0-9]{8}' &> /dev/null
    tt=$?
done

idate=$(date --date $time +%s)
ndate=$(date +%s)
zztime() {
let cdate=$[$1-$2]          #秒数的差值
let ddate=$[cdate/86400]   #天数
let fdate=$[cdate%86400]   #余下的秒数
let mdate=$[fdate/60]      #分钟数
let hdate=$[mdate/60]      #小时数
let ydate=$[mdate%60]      #余下的分钟数
let Mdate=$[fdate%3600%60] #余下的秒数
}   
#echo $idate
#echo $ndate
#echo $cdate
#echo $ddate
#echo $fdate
#echo $mdate
#echo $hdate
#echo $ydate

if [ $idate -lt $ndate ];then
    zztime $ndate $idate
    echo "ni yi jing hui jia: ${ddate}-day-$hdate:$ydate:$Mdate"
else
    zztime $idate $ndate
    echo "hai you: ${ddate}day-$hdate:$ydate:$Mdate ke yi hui jia"
fi

        最初在zztime函数里用的是declare -i 然后底下就出不来那些计算好的变量,用bash -x看了一下,变量是生效了,就是没出来。换成了let以后就OK了。思路很重要啊。 中间的那些echo 是调试的时候加上去的。

        主要练习一下函数,当然这个还是有很多不足之处的。练习……

你可能感兴趣的:(shell脚本)