zoukankan      html  css  js  c++  java
  • shell 判断月末日期

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

    解决如下:

    #!/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

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

  • 相关阅读:
    java工程文件路径的问题
    to_char
    tnsname.ora
    Linux(Centos)快速搭建SVN
    /etc/profile不生效问题
    不同servlet版本的web.xml的头部信息
    The serializable class XXX does not declare a static final serialVersionUID field of type long的警告
    面试:第六章:面试题收集
    面试:第一章:java基础各种区别
    面试:第二章:各种框架和中间件以及缓存数据库
  • 原文地址:https://www.cnblogs.com/hello-wei/p/11349894.html
Copyright © 2011-2022 走看看