shell 跨月日期处理

shell 某月最后一天   shell 日期处理   Shell/Python  
比如某shell脚本需要传一个起始日期来处理数据如下

sh test.sh $1 $2

#!/bin/bash
start_day=$1  
end_day=$2  
days=`seq $start_day $end_day`  
for day in $days  
do  
    echo $day
done  

   同一月份的起始日期依次替增没有问题,当起始日期为 20150501-20150610时,会出现20150531..20150599无效日期如何避免修改如下过滤无效日期

方法一
#!/bin/bash
datebeg=$1  
dateend=$2  
days=`seq $datebeg $dateend`  
for day in $days  
do  
    mouth=`echo $day|cut -c5-6`
    if [ `echo $day|cut -c7-8` -gt `cal -m $mouth|xargs echo|awk '{print $NF}'` ];then
            continue
    fi
    echo $day
done  
解释一下
#cal 获取某月的最后一天
cal -m $mouth|xargs echo|awk '{print $NF}'  

方法二
#!/bin/bash
datebeg=$1  
dateend=$2

beg_s=`date -d "$datebeg" +%s`  
end_s=`date -d "$dateend" +%s`  
while [ "$beg_s" -le "$end_s" ]  
do  
     day=`date -d '1970-01-01 UTC '$beg_s' seconds' +"%Y%m%d"`
     echo $day
     beg_s=$((beg_s+86400))
done  
解释一下
#换算成linux时间戳格式,每隔一天加86400秒
date -d "20150604" +%s  
#再把时间戳格式换算成日期格式
date -d '1970-01-01 UTC 1433347200 seconds' +"%Y%m%d"