#!/bin/bash echo Enter "year" and "month" #入力する年月の呼びかけ read year month #入力された年月の読み込み echo "$year年 $month月" #出力                     if [ $month=1 -o $month=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 = 14 ] #2月ならば28日まで then i=28 if [ $a = 0 ] #入力された月が4で割れれば29日 then i=`expr $((i+1))` elif [ $e = 0 ] #ただし、100で割り切れる年は28日 then i=`expr $((i-1))` elif [ $c = 0 ] #ただし、400でも割れるときはやはり29日にする then i=`expr $((i+1))` fi else if [ $mt=4 -o $mt=6 -o $mt=9 -o $mt=11 ] #4月、6月、9月、11月ならば then i=30 #30日まで else i=31 #そうでないならば31日まで fi fi printf " %s %s %s %s %s %s %s\n" 日 月 火 水 木 金 土 #カレンダーとして表示する if [ $h = 0 ] then printf " 1\n" elif [ $h = 2 ] then printf " 1 2 3 4 5 6\n" elif [ $h = 3 ] then printf " 1 2 3 4 5\n" elif [ $h = 4 ] then printf " 1 2 3 4\n" elif [ $h = 5 ] then printf " 1 2 3\n" elif [ $h = 6 ] then printf " 1 2\n" fi if [ $h = 0 -o $h = 1 ] then h=`expr $((h+7))` fi j=`expr $((9-h))` k=`expr $((8-h))` while test $j -le $i do if [ $j = $i ] then printf "%3d\n" $j else l=`expr $((j%7))` if [ $l = $k ] then printf "%3d\n" $j else printf "%3d" $j fi fi j=`expr $((j+1))` done