#!/bin/bash #まず何年何月?と聞かれるので年・月の順番で入力 echo "何年何月ですか?" read year month #年・月・曜日を出力 echo "$year年 $month月" > ./results/quiz2.txt printf "%2s %2s %2s %2s %2s %2s %2s\n" "Su" "Mo" "Tu" "We" "Th" "Fr" "Sa" >> ./results/quiz2.txt #月からその月の最終日を求める。 if [ $month = 2 ] then if [ $(($year % 4 )) = 0 ] then lday=29 else lday=28 fi if [ $(($year % 100 )) = 0 -a $(($year % 400 )) != 0 ] then lday=28 fi elif [ $month = 4 -o $month = 6 -o $month = 9 -o $month = 11 ] then lday=30 else lday=31 fi #Zellerの公式を使うために1月は前の年の13月、2月は前の年の14月とする if [ $month = 1 -o $month = 2 ] then y=`expr $year - 1` m=`expr $month + 12` else y=$year m=$month fi #Zellerの公式よりその日の曜日を決める a=1 while [ $a -le $lday ] do b=`expr $(($y + $(($y / 4)) - $(($y / 100)) + $(($y / 400)) + $(($(($(($m * 13)) + 8)) / 5)) + $a)) % 7` #1週間分の日にちを決めていく while [ $b -le 6 ] do case $b in 0) if [ $a -le $lday ] then Su=$a else Su=" " fi;; 1) if [ $a -le $lday ] then Mo=$a else Mo=" " fi;; 2) if [ $a -le $lday ] then Tu=$a else Tu=" " fi;; 3) if [ $a -le $lday ] then We=$a else We=" " fi;; 4) if [ $a -le $lday ] then Th=$a else Th=" " fi;; 5) if [ $a -le $lday ] then Fr=$a else Fr=" " fi;; 6) if [ $a -le $lday ] then Sa=$a else Sa=" " fi;; esac a=`expr $a + 1` b=`expr $b + 1` done #1週間分の日にちを出力し、次の週へ printf "%2s %2s %2s %2s %2s %2s %2s\n" "$Su" "$Mo" "$Tu" "$We" "$Th" "$Fr" "$Sa" >> ./results/quiz2.txt done #最後の週が出力すると終わる