有一个需求,根据输入的时间段,在这个时间段中的是月末的日期执行脚本

解决如下:

#!/bin/bash
if [ -z $1 ]
then
echo "请输入年月日8位开始日期"
exit $E_MISSING_POS_PARAM
fi

if [ -z $2 ]
then
echo "请输入年月日8位结束日期"
exit $E_MISSING_POS_PARAM
fi

if [ $1 -gt $2 ]
then
echo "后面的日期需大于前面的日期"
exit $E_MISSING_POS_PARAM
fi

datebeg=$1
dateend=$2

set -e

beg_s=` date -d "$datebeg" +%s`
end_s=` date -d "$dateend" +%s`
while((end_s>=beg_s))
do
    incdate=`date -d @$beg_s +%Y%m%d`
    y=`date -d ''$incdate' 0 days'  +%Y`
    m=`date -d ''$incdate' 0 days'  +%m`
    d=`date -d ''$incdate' 0 days'  +%d`
    if [ $(date -d ''$incdate' 0 days'  +%d) -eq $(cal $m $y |xargs|awk '{print $NF}') ]  
       then  
          echo "是月底,执行该天:$incdate"
          #请属于需要执行的命令

else
          echo "不是月底,跳过该天:$incdate"
    fi
((beg_s+=86400))
done

运行脚本:

[root@master]# sh lastday.sh 20190620 20190801
不是月底,跳过该天:20190620
不是月底,跳过该天:20190621
不是月底,跳过该天:20190622
不是月底,跳过该天:20190623
不是月底,跳过该天:20190624
不是月底,跳过该天:20190625
不是月底,跳过该天:20190626
不是月底,跳过该天:20190627
不是月底,跳过该天:20190628
不是月底,跳过该天:20190629
是月底,执行该天:20190630
不是月底,跳过该天:20190701
不是月底,跳过该天:20190702
不是月底,跳过该天:20190703
不是月底,跳过该天:20190704
不是月底,跳过该天:20190705
不是月底,跳过该天:20190706
不是月底,跳过该天:20190707
不是月底,跳过该天:20190708
不是月底,跳过该天:20190709
不是月底,跳过该天:20190710
不是月底,跳过该天:20190711
不是月底,跳过该天:20190712
不是月底,跳过该天:20190713
不是月底,跳过该天:20190714
不是月底,跳过该天:20190715
不是月底,跳过该天:20190716
不是月底,跳过该天:20190717
不是月底,跳过该天:20190718
不是月底,跳过该天:20190719
不是月底,跳过该天:20190720
不是月底,跳过该天:20190721
不是月底,跳过该天:20190722
不是月底,跳过该天:20190723
不是月底,跳过该天:20190724
不是月底,跳过该天:20190725
不是月底,跳过该天:20190726
不是月底,跳过该天:20190727
不是月底,跳过该天:20190728
不是月底,跳过该天:20190729
不是月底,跳过该天:20190730
是月底,执行该天:20190731
不是月底,跳过该天:20190801

注释:只需要在输入你需要执行的命令即可。

shell 判断月末日期的更多相关文章

  1. shell判断文件是否存在

    转自:http://www.cnblogs.com/sunyubo/archive/2011/10/17/2282047.html 1. shell判断文件,目录是否存在或者具有权限 2. #!/bi ...

  2. linux中用shell获取时间,日期

    linux中用shell获取昨天.明天或多天前的日期:在Linux中对man date -d 参数说的比较模糊,以下举例进一步说明:# -d, --date=STRING display time d ...

  3. Linux shell判断文件和文件夹是否存在

    shell判断文件,目录是否存在或者具有权限 #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/acc ...

  4. shell 判断字符串是否为数字

    本篇文章主要介绍了"shell 判断字符串是否为数字",主要涉及到shell 判断字符串是否为数字方面的内容,对于shell 判断字符串是否为数字感兴趣的同学可以参考一下. #!/ ...

  5. shell判断条件是否存在

    1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. myFile="/var ...

  6. shell 判断文件、目录是否存在

    shell判断文件是否存在   1. shell判断文件,目录是否存在或者具有权限 2. #!/bin/sh 3. 4. myPath="/var/log/httpd/" 5. m ...

  7. Javascript Date 判断输入日期是否正确

    JavaScript的Date对象有容错性,可将随意给定的日期的年月日自动生成正确的日期时间 //JavaScript中Date对象容错性 function dateCheck(){ var date ...

  8. Shell 判断文件或文件夹是否存在

    #shell判断文件夹是否存在 #如果文件夹不存在,创建文件夹 if [ ! -d "/myfolder" ]; then mkdir /myfolder fi #shell判断文 ...

  9. [转] Linux shell判断文件和文件夹是否存在

    shell判断文件,目录是否存在或者具有权限 #!/bin/sh myPath="/var/log/httpd/" myFile="/var /log/httpd/acc ...

随机推荐

  1. (翻译) How variables are allocated memory in Javascript? | scope chain | lexicial scope

    总结: 阅读下面文章需要15分钟 提问者的问题是JavaScript中内存是怎么分配的,在介绍的过程作者涉及计到了JS中 Scope Chain和调用函数call生成lexicial environm ...

  2. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_18-CMS前端页面查询开发-页面原型-创建页面和定义路由

    module下创建cms目录,里面存cms模块相关的页面 在cms下创建api和components目录,components下放的就是组件. 这个组件刚才介绍的base的下的组件不一样.base下的 ...

  3. mongodb查询修改

    //查 public StatisticsSchoolPracticeView findByUser(String userId,int statOrgType,int inDateType){ Qu ...

  4. Django setting 常用配置

    setting.py           这个文件包含了所有有关这个Django项目的配置信息,均大写:   TEMPLATE_DIRS , DATABASE_NAME , 等. 最重要的设置是 RO ...

  5. Outlook2016中如何实现自动密送

    Outlook2016中如何实现自动密送 下面的方案您可以参考一下: 1)在Outlook里面键入Alt+F11打开VBA编辑器: 2)激活左边的工程面板,展开并双击上面的“Project (VbaP ...

  6. dp[2019.5.25]

    1.实例计算(写出计算过程): 1)对维数为序列<5, 10, 3, 12, 5, 50, 6>的各矩阵,找出其矩阵链乘积的一个最优加全部括号. 这是一个矩阵连乘问题,基本知识可以参考: ...

  7. d3学习之路

    d3学习历程: 轻量化编译器:HbuiderXHbuiderX使用教程   理解HTMl js CSS 三者关系   学习html js css :1)w3school           2)moo ...

  8. 【图像处理与医学图像处理】NV12与YV12的区别

    用videoCapture和IAMStreamConfig拿到的支持的格式列表.发现支持2中图像格式,YV12和NV12.具体是怎么样的内存分布不知道.查了些文档.自己修改了几个图.看出了点端倪YV1 ...

  9. 关于 layer.open 动态赋值不了的问题

    前情: layer.open({ type:1, // 用的是默认的信息弹框 content: $('#test'), // 这里不用 $('#test').html(), 不然后面获取不了值 }); ...

  10. Rocketmq-简单部署

    一.准备环境 1.系统:Centos7.3(无硬性要求) 2. jdk:1.8 3.maven:3.5(无硬性要求) 4.git 5.rocketmq 4.2 二.环境部署 1.jdk1.8以及mav ...