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

注釋:只需要在輸入你需要執行的命令即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM