• 欢迎访问好鸭,WordPress信息,WordPress教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏好鸭吧

生成任意年份所有日期的Shell脚本

教程 haoduck 6个月前 (10-27) 39次浏览 0个评论

主要是对闰年平年、大月小月的处理

就是大月31天,小月30天

针对2月判断是闰年还是平年,润年29天,平年28天

脚本

使用方法,将代码保存为get_everyday.sh

然后执行bash get_everyday.sh 2020

日期格式为20200101~20201231这样的8位数字

它会保存到脚本同目录下的2020_everyday.txt

想要哪一年就将2020改为你需要的年份

没有针对年份参数处理,也就是你执行bash get_everyday.sh 0000之类的,会输出错误的年份,如果是传入字母、文字之类的参数,会把字母、文字当成年份输出。

比如执行bash get_everyday.sh abc,会输出abc0101~abc1231

get_Feb()
{
    year=$1
    let "y1=$year % 4"
    let "y2=$year % 100"
    let "y3=$year % 400"
    if [ ! "$y1" -eq 0 ]
    then
    leap=0
    elif [ ! "$y2" -eq 0 ]
    then
    leap=1
    elif [ "$y3" -eq 0 ]
    then
    leap=1
    else
    leap=0
    fi
    if [ "$leap" -eq 1 ]
    then
    echo 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
    else
    echo 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
    fi
}
get_day()
{
    case $1 in
    01|03|05|07|08|10|12)
        echo 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
        ;;
    02)
        echo $(get_Feb $year)
        ;;
    04|06|09|11)
        echo 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
        ;;
    *)
    esac
}

year=$1
for month in 01 02 03 04 05 06 07 08 09 10 11 12
do
    for day in $(get_day $month)
    do
        echo $year$month$day >> $year"_everyday.txt"
    done
done

好鸭 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:生成任意年份所有日期的Shell脚本
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址