本文共 961 字,大约阅读时间需要 3 分钟。
1. 脚本参考
脚本1:
#!/bin/bash#格式化过期日期,格式化过期日期完整时间以当前时间作为参考!expday="2018-04-11 `date +%T`"echo "Expire day is $expday"#当前日期时间格式为stamp时间戳todays=`date +%s`echo "Today is $(date +"%F %T")"#以下2种方式做时间的四则运算,分别使用 let 或者 $(( ))#过期日期已格式化,规避整数运算的误差(去余数)#let dayDiff=($(date -d "$expday" +%s)-$todays)/86400dayDiff=$(( ($(date -d "$expday" +%s)-$todays)/86400 ))echo "Diff day is $dayDiff days!"
其余说明:
bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。脚本2:
支持浮点运算,精确计算天数的方法:
#!/bin/bash#不用刻意格式化过期日,默认时间 00:00:00expday="2018-04-11"echo "Expire day is $expday"todays=`date +%s`echo "Today is $(date +"%F %T")"#仅输出计算公式,管道输出给bc进行浮点运算#scale控制小数位数dayDiff=`echo "scale=2;($(date -d "$expday" +%s)-$todays)/86400"|bc`echo "Diff day is $dayDiff days!"
2. 浮点数比较方法:
——————————————————————————if [ $(echo "1.8 < 15" | bc) = 1 ];thenecho Trueelseecho Falsefi
3. 使用date命令的日期直接对比
3day=$(date -d "$Expday -3 day" %F)2day=$(date -d "$Expday -2 day" %F)
转载于:https://blog.51cto.com/70720/2095952