shell脚本 - 日期比较与判断

比较2个日期的相差天数

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)/86400
dayDiff=$(( ($(date -d "$expday" +%s)-$todays)/86400 ))

echo "Diff day is $dayDiff days!"

其余说明:
bash 不支持浮点运算,如果需要进行浮点运算,需要借助bc,awk 处理。

脚本2:



支持浮点运算,精确计算天数的方法:

#!/bin/bash
#不用刻意格式化过期日,默认时间 00:00:00
expday="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 ];then
echo True
else
echo False
fi

3. 使用date命令的日期直接对比


3day=$(date -d "$Expday -3 day" %F)
2day=$(date -d "$Expday -2 day" %F)

原文地址:http://blog.51cto.com/70720/2095952

时间: 2024-10-14 11:46:54

shell脚本 - 日期比较与判断的相关文章

shell脚本中实现自动判断用户有无密码

在最近完成老师布置的作业的时候遇到了如何让shell脚本中的命令自动判断一个用户是否已设置密码的问题,虽然看似不是很难的一个问题,但是在这一功能实现的过程中却包含了许多细小的而重要的知识.刚开始小编对此很是头疼,虽然我们查看一个用户是否有密码并不是很难,直接cat /etc/shadow这个文件看看密码位是否有加密的字符就行了,但是让命令自己去判断和匹配就不是很顺利了,小编上网查看后,并没有得到很好的答案,大多数都是人工查看的答案,并不适用于shell脚本中自动的判断,所以在认真对比/etc/p

shell脚本进阶之循环判断

p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; font-size: 14.0pt; font-family: 等线 } h1 { margin-top: 15.6pt; margin-right: 0cm; margin-left: 0cm; margin-bottom: .0001pt; text-align: justify; line-he

shell脚本编程:条件判断if语句使用小结

shell脚本编程,有三种控制结构分别是:顺序结构,条件判断结构,循环结构.本文将总结shell脚本中条件判断结构的使用方法. 条件判断结构分为三种,单分支,双分支,多分支,等结构. 单分支结构的语法如下: if [ expression  ] ;then statement1 statement2 ......... fi 双分支语法结构: if [ expression ];then statement1 statement2 ..... else statement3 statement4

Linux shell脚本之 if条件判断

IF条件判断 1.基本语法: if [ command ]; then 符合该条件执行的语句 fi 2.扩展语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条件执行的语句 fi 3.语法说明: bash shell会按顺序执行if语句,如果command执行后且它的返回状态是0,则会执行符合该条件执行的语句,否则后面的命令不执行,跳到下一条命令. 当有多个嵌套时,只有第一个返回0退出状态的命令

shell脚本基础 数值运算 判断 及if语句

数值运算 整数运算[三种,随便掌握一种即可]expr 数字 运算符 数字 [[email protected] ~]# expr 1 + 1(运算符号都是+ - * / 注:*需要\*.%是取余,余数只有0 1 2)2[[email protected] ~]# expr 45 \* 145 echo$[数字 运算符 数字][[email protected] ~]# echo $[89*89+454848*874851]397924235569 leti++ == i=i+1i+=2 == i

shell脚本的测试与判断的基础实施

一.条件测试:判断条件是否成立 1.条件测试的类型:文件测试:整数比较:字符串比较:逻辑测试 2.条件测试的语法:[ 操作符  条件表达式]等于 test  操作符  条件表达式 3.文件测试: 1)文件的类型:-(普通文件),d(里面),c(字符设备),s(套接字).b(块设备).p(管道文件,可以用于屏幕演示) 2)文件判断符:-f  文件,-d目录,-e文件是否存在,-rwx判断是否有权限  [操作符  文件] 4.整数比较 1)语法:[ 数字1   操作符  数字2] 2)操作符:-eq

Shell脚本判断IP是否合法性

运维角度来说,写shell脚本经常会遇到判断输入的值是否合法,比如IP.邮件地址等.那么,根据自身写脚本中总结的判断IP合法性脚本分享给网友,遇到时能有所参考. 思路:IP由四位数字组成,以点分割,每个字段不能大于255,必须符合这种格式 方法1: function check_ip() {     IP=$1     VALID_CHECK=$(echo $IP|awk -F. '$1<=255&&$2<=255&&$3<=255&&$4

shell脚本的使用---if条件判断

shell脚本的测试与判断 1.测试 语法: [ 操作符 条件 ] == test 操作符 条件 1)测试文件级目录 文件的类型: f,文件 ls -l ##只查看字段的第一个字符,文件"-" d,目录 ls -ld l,链接文件 ls -l c,字符 设备 ls -l /dev/tty b,块设备 ls -l /dev/sda1 s,套接字文件,一般服务使用mysql ls -l /tmp/mysql.socket p,管道 mkfifo hehe ##创建管道文件 ls -l he

Linux | shell脚本-条件判断if和循环语句for

一.简介 上个章节中,我们学习了判断语句和运算语句.shell脚本中,这些判断语句一般都是和if.else.elif.for和while等语句一起使用. 在脚本编写中,条件判断语句常常用于多种情况的判断,符合哪一种情况就执行哪一种的命令. 二.shell条件判断语句:if 1.流程控制:if单分支结构 语法: if 条件判断:then 条件判断成功时执行的操作 ... fi 例子: 结合整数值比较-eq:检查主机是否在线 vim test1.sh运行结果:2.流程控制:if双分支结构 语法: i