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

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

  • 相关阅读:
    tcp没用吗?为什么MOBA、“吃鸡”游戏不推荐用tcp协议
    这样做动画交互,一点都不费力!
    sql server 小记——分区表(上)
    vs中不得不会的一些小技巧(1)——细说查找
    Aforge.net之旅——开篇:从识别验证码开始
    Redis Hash操作
    Varint 数值压缩
    LevelDB Version
    LevelDB Cache机制
    LevelDB Compaction操作
  • 原文地址:https://www.cnblogs.com/hello-wei/p/11349894.html
Copyright © 2011-2022 走看看