有一個需求,根據輸入的時間段,在這個時間段中的是月末的日期執行腳本
解決如下:
#!/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
注釋:只需要在輸入你需要執行的命令即可。