ことしから10年間の「13日の金曜日」を列挙するbash oneliner。
科学的にはなんの特別なこともない日だけど、bashのfor文の練習に。
$ for y in {2017..2026}
> do
> for m in {1..12}
> do
> ncal $m $y | grep '^金.*13' > /dev/null
> if [ $? -eq 0 ]
> then echo "$y"年"$m"月13日は金曜日だ。
> else :
> fi
> done
> done
味噌は、
- for は入れ子にできる。
- calでなく、同じ曜日の日を1行に並べるncalを使っている。
- ncalの出力からgrepで13日の金曜日を選んでるけれど、それ自体の出力は/dev/nullに捨てて、そのかわりに返り値(マッチが成功した場合に0を返す)を利用している。
$ ncal 1 2017
1月 2017
月 2 9 16 23 30
火 3 10 17 24 31
水 4 11 18 25
木 5 12 19 26
金 6 13 20 27
土 7 14 21 28
日 1 8 15 22 29
0 件のコメント:
コメントを投稿