最近在写一个数据处理的shell脚本,脚本中涉及到日期参数的容错,网上找了很多日期格式正确与否的判断例子,发现都写的很复杂,我这里提供一个取巧的判断方法,具体代码如下:
#!/bin/bash
# Title:Date check script
# Copyright LiJun
# Update Time:20191020
date_check(){
date -d $1 > /dev/null 2>&1
date_state1=$?
echo $1|grep - > /dev/null 2>&1
date_state2=$?
if [[ $date_state1 -eq 0 ]] && [[ $date_state2 -eq 0 ]]; then
echo 日期格式正确!
else
echo 日期格式错误!
exit
fi
}
date_check 2019-10-20
执行脚本就可以看到日期检测结果,唯一正确的日期格式为:2019-10-20,其它任意形式,例如写成20191020,2019-1020,2019-10-40等等所有的非法格式都会判断为错误格式。