一、引言
编写任何程序必可不少的一个环节是前置检查和后置验证,shell脚本编写也不例外,其中一类是日期检查。现有给出的较多方法是判断长度,拆分字符串(echo $datestring|cut -c x-y),利用日历功能cal $month $year| grep $day查询是否存在该日期。这种方法看似好用,但会存在Bug(见http://blog.csdn.net/zmxj/article/details/3950303),而且个人觉得这种方式有点不优雅。
二、我的方法
我这里提供的方法很简单的,只是利用日期的命令来检查输入的格式是否正确。代码如下:
function checkDate(){
date --date "$1" +%Y%m%d 2>/dev/null
if [ "$?" == 1 ]; then
echo "Please input correct date! Ilegal date : $1"
exit 1
fi
}
read -p "Input your birthday(ex>19840901): " birthday
checkDate $birthday
echo "now start calculate the days before your next birthday."
其中checkDate即是检查日期字符串的方法。
我的测试环境是:
CentOS release 6.6 (Final)
三、后记
网上资料显示同样也有人使用date来做日期检查(http://blog.csdn.net/zmxj/article/details/3950303),但指出其有限制,我在测试过程中没有发现这一问题,中英文皆可