#!/bin/bash if [ $1 -lt 2016 ] #引数が2016より小さいとき、 then echo 2016 年以降の年を指定してください. #2016 年以降の年を指定してください.と表示し、引数が2016以上の時は以下のスクリプトを実行する else y=2016 #y=2016とおく while [ $y -ne $(($1+1)) ] #$yが$(($1+1))と一致しない限りdoとdoneの間に書かれたコマンドを実行し続ける do m=13 #m=13とおく while [ $m -ne 15 ] #$mが15と一致しない限りdoとdoneの間に書かれたコマンドを実行し続ける do d=13 #d=13とおく C=$((($y-1)/100)) #($y-1)/100の計算結果をCとおく Y=$((($y-1)%100)) #($y-1)%100の計算結果をYとおく G=$((5*$C+$C/4)) #5*$C+$C/4の計算結果をGとおく h=$((($d+26*($m+1)/10+$Y+$Y/4+$G)%7)) #$d+26*($m+1)/10+$Y+$Y/4+$G)%7の計算結果をhとおく echo $h | grep "6" >> 21.txt #計算結果$hの値のうち6のみを21.txtの末尾に追加する m=$(($m+1)) #$m+1をmとおく done m=3 #m=3とおく while [ $m -ne 13 ] #$mが13と一致しない限りdoとdoneの間に書かれたコマンドを実行し続ける do d=13 #d=13とおく C=$(($y/100)) #$y/100の計算結果をCとおく Y=$(($y%100)) #$y%100の計算結果をYとおく G=$((5*$C+$C/4)) #5*$C+$C/4の計算結果をGとおく h=$((($d+26*($m+1)/10+$Y+$Y/4+$G)%7)) #$d+26*($m+1)/10+$Y+$Y/4+$G)%7の計算結果をhとおく echo $h | grep "6" >> 21.txt #計算結果$hの値のうち6のみを21.txtの末尾に追加する m=$(($m+1)) #$m+1をmとおく done y=$(($y+1)) #$y+1をyとおく done a=`grep -c "6" 21.txt` #21.txt内に6の文字列が含まれる行数の値をaとおく echo $a日 #$a日と出力する。これが2016年1月1日から指定された任意の年の12月31日までの期間中に存在する13日の金曜日の日数である fi rm 21.txt #一時ファイル21.txtを削除する