指定した年月からその月の最終日を返すシェルスクリプトです。
引数に数値以外が渡されると、「引数に年月(YYYY MM)を入力してください」を表示して終了します。
14行目はうるう年の計算をしています。
年が4で割り切れて且つ100で割り切れない、または400で割り切れる場合はうるう年です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/bin/bash year=$1 month=$2 case "$month" in 1|3|5|7|8|10|12) echo "31" ;; 4|6|9|11) echo "30" ;; 2) if (( year % 4 == 0 && year % 100 != 0 || year % 400 == 0 )) then echo "29" else echo "28" fi ;; *) echo "引数に年月(YYYY MM)を入力してください" exit 1 esac |
実行例
$ ./get_lastday.sh 2020 3
31