shell按月循环取数

这里有个需求,按月查询,并且要输出每月的开始日期,结束日期。

shell脚本如下:

#!/bin/sh


echo "0个参数时, 按月执行,默认当前月份 "
echo "1个参数时, 按月执行,输入月份格式:2019-02"
echo "2个参数时, 按月执行,输入月份格式:2019-01 2019-02"

if [ $# = 1 ]; then
    start_month=$1
    end_month=$1
elif [ $# = 2 ]; then
    start_month=$1
    end_month=$2
elif [ $# = 0 ]; then
    start_month=`date +%Y-%m`
    end_month=`date +%Y-%m`
fi


start_sec=`date -d "${start_month}-01" +%s`
end_sec=`date -d "${end_month}-01" +%s`

while [ $start_sec -le $end_sec ]; do

    day_curr=`date -d @$start_sec +%Y-%m-%d`
    month_curr=`date -d @$start_sec +%Y-%m`

    start_date=`date -d"${month_curr}-01" "+%Y-%m-01"`      #月份开始日期
    tmp_dt=`date -d"${month_curr}-01 +1 months" "+%Y-%m-01"`   
    end_date=`date -d "${tmp_dt} -1 day" "+%Y-%m-%d"`       #月份结束日期

    echo $month_curr $start_date $end_date
    ## 这里放要处理的过程
    ## 123456

    ## 一次结束重置月份
    let start_sec=`date -d "${month_curr}-01 +1 months" +%s`

done

默认,不输入参数时,执行结果:

输入指定月份参数时:

输入区间月份时:

 

这样就完美了。

 

posted @ 2019-05-05 15:20  硅谷工具人  阅读(2969)  评论(1)    收藏  举报
成功之道,在于每个人生阶段都要有不同的目标,并且通过努力实现自己的目标,毕竟人生不过百年! 所有奋斗的意义在于为个人目标实现和提升家庭幸福,同时能推进社会进步和国家目标! 正如古人讲的正心诚意格物致知,修身齐家治国平天下。