#!/bin/bash echo Enter \"year\" and \"month\" #入力する年月の呼びかけ read year month #入力された年月の読み込み echo "$year年 $month月" |tee quiz2.txt #出力                     if [ $month -eq 1 -o $month -eq 2 ] #もし入力された月が1月、2月ならば then mt=`expr $month + 12` #与えられた月に+12 yr=`expr $year - 1` #与えられた年-1 else mt=$month #そうでないならばそのまま yr=$year fi #ツェラーの公式より曜日計算 a=`expr $((yr%4))` b=`expr $((yr%100))` c=`expr $((yr%400))` d=`expr $((yr/100))` e=`expr $((y-c*100))` f=`expr $((mt+1))` g=`expr $((1+f*26/10+e+e/4+d/4-d*2))` h=`expr $((g % 7))` if [ $h -lt 0 ] #公式より計算が負になった場合7を足して正の値にする。 then h=`expr $((h+7))` fi if [ $mt -eq 14 ] ; then #入力された月が2月で if [ $a -ne 0 ] #その年が4で割れる年ならば then i=28 #28日まで elif [ $b -eq 0 -a $c -ne 0 ] #また、100で割れて400で割れない年でも then i=28 #28日まで else i=29 #それ以外ならば29日まで fi else if [ $mt -eq 4 -o $mt -eq 6 -o $mt -eq 9 -o $mt -eq 11 ] #4月、6月、9月、11月ならば then i=30 #30日まで else i=31 #そうでないならば31日まで fi fi printf " %s %s %s %s %s %s %s\n" 日 月 火 水 木 金 土 |tee quiz2.txt #カレンダーとして表示する if [ $h -eq 0 ] #ツェラーの計算よりhが0の時 then printf " 1\n" |tee quiz2.txt         #最初の日を土曜日から始める elif [ $h -eq 2 ] #hが2の時 then printf " 1 2 3 4 5 6\n" |tee quiz2.txt #最初の日を月曜日から始める elif [ $h -eq 3 ] #hが3の時 then printf " 1 2 3 4 5\n" |tee quiz2.txt #最初の日を火曜日から始める elif [ $h -eq 4 ] #hが4の時 then printf " 1 2 3 4\n" |tee quiz2.txt #最初の日を水曜日から始める elif [ $h -eq 5 ] #hが5の時 then printf " 1 2 3\n" |tee quiz2.txt #木曜日から始める elif [ $h -eq 6 ] #hが6の時 then printf " 1 2\n" |tee quiz2.txt #最初の日を金曜日から始める fi if [ $h -eq 0 -o $h -eq 1 ] #hが0またはhが1の時は then h=`expr $((h+7))` #カレンダーは2行目へ fi j=`expr $((9-h))` k=`expr $((8-h))` while test $j -le $i do if [ $j -eq $i ] #最後の日付までかけたら終わり then printf "%3d\n" $j else l=`expr $((j%7))` if [ $l -eq $k ] then printf "%3d\n" $j #土曜日で改行 else printf "%3d" $j fi fi j=`expr $((j+1))` done