#!/bin/bash if [ $# -ne 1 ] then echo 2016年以降の年を引数として入力してください exit fi #引数の確認 echo ' ' > q2Zeller.txt #q2Zeller.txtという空のファイルを作成 if [ $1 -le 2015 ] then echo 2016年以降の年を指定してください exit #2016年より前を入力した場合のエラー elif [ $1 -eq 2016 ] #2016年の場合 then for m in `seq 3 12` #2016年の1,2月に13日の金曜日は存在しないので計算していない do a=`expr \( 13 + 26 \* \( $m + 1 \) / 10 + $1 % 100 + $1 % 100 / 4 + $1 / 100 \* 5 + $1 / 400 \) % 7` echo $a >> q2Zeller.txt #ツェラーの公式をもちいて各月の13日の曜日を計算し、q2Zeller.txtに出力 done else #2017年以降の場合 b=`expr $1 - 1` for y in `seq 2016 $b` do for m in `seq 3 14` do a=`expr \( 13 + 26 \* \( $m + 1 \) / 10 + $y % 100 + $y % 100 / 4 + $y / 100 \* 5 + $y / 400 \) % 7` echo $a >> q2Zeller.txt done done #まず2016年の3月から指定された年の2月までの各月の13日の曜日を計算し、q2Zeller.txtに出力 for m in `seq 3 12` do a=`expr \( 13 + 26 \* \( $m + 1 \) / 10 + $1 % 100 + $1 % 100 / 4 + $1 / 100 \* 5 + $1 / 400 \) % 7` echo $a >> q2Zeller.txt done #さらに指定された年の3月から12月までの13日の曜日を計算し、q2Zeller.txtに出力 fi c=`grep -c 6 q2Zeller.txt` echo $c'日' #q2Zeller.txtに出力された金曜日を意味する6の個数を数えて出力。 rm q2Zeller.txt #最後にq2Zeller.txtを削除して終了