Linux shell 之日期检查


一、引言

编写任何程序必可不少的一个环节是前置检查和后置验证,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),但指出其有限制,我在测试过程中没有发现这一问题,中英文皆可


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值