主要是对闰年平年、大月小月的处理
就是大月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