赞
踩
我不是码农,我是数据搬运工。年前最后一天上班,在搬数据。从北京IDC机房传数据到杭州IDC机房做分析处理,看了一下之前自己写的shell脚本,发现日期没有校验,感觉有点不爽,然后写了个校验。
废话不多说:
1.校验YYYYMMDD格式的日期,只允许8位长度。
2.校验YYYY-MM-DD格式的日期,长度随意。
稍加修改,就可以去校验“YYYY-MM-DD HH24:mi:ss”了
#cat date_test.sh
tt=`date -d "2010-10-111" +"%Y-%m-%d"`
echo $?
tt=`date -d "2010-10-1" +"%Y-%m-%d"`
echo $?
function check_date(){
dt="$1"
len_dt=${#dt}
dt=${dt//-/}
len_dt2=${#dt}
p=`echo $(($len_dt-$len_dt2))`
if [ 2 -eq $p ]
then
tt=`date -d "$1" +"%Y-%m-%d"`
echo $?
else
if [ 8 -eq $len_dt2 ]
then
tt=`date -d "$1" +"%Y-%m-%d"`
echo $?
else
echo 1
fi
fi
}
dt="20110101"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="201101011"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="2011-01-01"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="2011-1-1"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="2011-01-1"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="2011-01-01"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="2011-01-32"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="20110229"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="20110228"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="200002229"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="1-1-1"
echo -e "\ncheck_date $dt"
check_date "$dt"
dt="22221-1-1"
echo -e "\ncheck_date $dt"
check_date "$dt"
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
#sh date_test.sh
date: invalid date `2010-10-111'
1
0
check_date 20110101
0
check_date 201101011
1
check_date 2011-01-01
0
check_date 2011-1-1
0
check_date 2011-01-1
0
check_date 2011-01-01
0
check_date 2011-01-32
date: invalid date `2011-01-32'
1
check_date 20110229
date: invalid date `20110229'
1
check_date 20110228
0
check_date 200002229
1
check_date 1-1-1
0
check_date 22221-1-1
0
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
#sh -x date_test.sh
++ date -d 2010-10-111 +%Y-%m-%d
date: invalid date `2010-10-111'
+ tt=
+ echo 1
1
++ date -d 2010-10-1 +%Y-%m-%d
+ tt=2010-10-01
+ echo 0
0
+ dt=20110101
+ echo -e '\ncheck_date 20110101'
check_date 20110101
+ check_date 20110101
+ dt=20110101
+ len_dt=8
+ dt=20110101
+ len_dt2=8
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 8 ']'
++ date -d 20110101 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=201101011
+ echo -e '\ncheck_date 201101011'
check_date 201101011
+ check_date 201101011
+ dt=201101011
+ len_dt=9
+ dt=201101011
+ len_dt2=9
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 9 ']'
+ echo 1
1
+ dt=2011-01-01
+ echo -e '\ncheck_date 2011-01-01'
check_date 2011-01-01
+ check_date 2011-01-01
+ dt=2011-01-01
+ len_dt=10
+ dt=20110101
+ len_dt2=8
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-01-01 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=2011-1-1
+ echo -e '\ncheck_date 2011-1-1'
check_date 2011-1-1
+ check_date 2011-1-1
+ dt=2011-1-1
+ len_dt=8
+ dt=201111
+ len_dt2=6
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-1-1 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=2011-01-1
+ echo -e '\ncheck_date 2011-01-1'
check_date 2011-01-1
+ check_date 2011-01-1
+ dt=2011-01-1
+ len_dt=9
+ dt=2011011
+ len_dt2=7
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-01-1 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=2011-01-01
+ echo -e '\ncheck_date 2011-01-01'
check_date 2011-01-01
+ check_date 2011-01-01
+ dt=2011-01-01
+ len_dt=10
+ dt=20110101
+ len_dt2=8
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-01-01 +%Y-%m-%d
+ tt=2011-01-01
+ echo 0
0
+ dt=2011-01-32
+ echo -e '\ncheck_date 2011-01-32'
check_date 2011-01-32
+ check_date 2011-01-32
+ dt=2011-01-32
+ len_dt=10
+ dt=20110132
+ len_dt2=8
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 2011-01-32 +%Y-%m-%d
date: invalid date `2011-01-32'
+ tt=
+ echo 1
1
+ dt=20110229
+ echo -e '\ncheck_date 20110229'
check_date 20110229
+ check_date 20110229
+ dt=20110229
+ len_dt=8
+ dt=20110229
+ len_dt2=8
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 8 ']'
++ date -d 20110229 +%Y-%m-%d
date: invalid date `20110229'
+ tt=
+ echo 1
1
+ dt=20110228
+ echo -e '\ncheck_date 20110228'
check_date 20110228
+ check_date 20110228
+ dt=20110228
+ len_dt=8
+ dt=20110228
+ len_dt2=8
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 8 ']'
++ date -d 20110228 +%Y-%m-%d
+ tt=2011-02-28
+ echo 0
0
+ dt=200002229
+ echo -e '\ncheck_date 200002229'
check_date 200002229
+ check_date 200002229
+ dt=200002229
+ len_dt=9
+ dt=200002229
+ len_dt2=9
++ echo 0
+ p=0
+ '[' 2 -eq 0 ']'
+ '[' 8 -eq 9 ']'
+ echo 1
1
+ dt=1-1-1
+ echo -e '\ncheck_date 1-1-1'
check_date 1-1-1
+ check_date 1-1-1
+ dt=1-1-1
+ len_dt=5
+ dt=111
+ len_dt2=3
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 1-1-1 +%Y-%m-%d
+ tt=0001-01-01
+ echo 0
0
+ dt=22221-1-1
+ echo -e '\ncheck_date 22221-1-1'
check_date 22221-1-1
+ check_date 22221-1-1
+ dt=22221-1-1
+ len_dt=9
+ dt=2222111
+ len_dt2=7
++ echo 2
+ p=2
+ '[' 2 -eq 2 ']'
++ date -d 22221-1-1 +%Y-%m-%d
+ tt=22221-01-01
+ echo 0
0
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。