days_this_month() { year="${1}" month="${2}" pid=$$ [ "${year}" -gt 0 -a "${month}" -gt 0 ] || ( echo "days_this_month wants year and month" >&2; kill -KILL ${pid}) february=28 [ "$(( ${year} % 4 ))" -eq 0 ] && [ "$(( ${year} % 100 ))" -gt 0 -o "$(( ${year} % 400 ))" -eq 0 ] && february=29 case "${month##0}" in 1|3|5|7|8|10|12) echo 31 ;; 4|6|9|11) echo 30 ;; 2) echo "${february}" ;; *) echo "Invalid month ${month}" >&2; kill -KILL ${pid} ;; esac }