写一个脚本判断日期是否合法

描述

【需求】

用shell脚本判断输入的日期是否合法。就是判断日期是否是真实的日期,比如20170110就是合法日期,20171332就不合法。假定年份不超过4位。

【分析】

判断日期是否合法,使用cal命令即可,cal命令用法:

1)cal什么都不加,打印全年的日历

 

cal

 

2)cal后面带一个参数,只能是带年份

 

cal 2022

 

这里的2022为年份,数值最小值为1,最大为999999999。

3)cal后面带两个参数,第一个为月份,第二个为年份

 

cal 10 2022

 

如果带两个参数时,第一个参数范围为1-12

4)cal后面带三个参数,第一个为日期,第二个为月份,第三个为年份

 

cal 10 10 2022

 

第一个数值范围1-31

有了以上cal命令的用法总结,接下来就是要把提供的日期划分成三部分:日期、月份、年份。

截取字符串,可以使用${an2},例如

 

a=12345
echo ${a3}  ##表示,截取字符串从第一位开始,截取3位
123

 

【参考答案】

 

#!/bin/bash
if [ $# -ne 1 ] || [ ${#1} -ne 8 ]
then
echo "Usage: bash $0 yyyymmdd"
exit 1
fi
datem=$1
year=${datem4}
month=${datem2}
day=${datem2}
if echo $day|grep -q '^0'
then
    day=`echo $day |sed 's/^0//'`
fi
if cal $day $month $year >/dev/null 2>/dev/null
then
     echo ok
else
     echo "Error: Please input a wright date."
     exit 1
fi

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分