如何写一个脚本判断日期是否合法
【需求】
用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命令的用法总结,接下来就是要把提供的日期划分成三部分:日期、月份、年份。截取字符串,可以使用${a:n1:n2},例如
a=12345
echo ${a:0:3} ##表示,截取字符串从第一位开始,截取3位
123
【参考答案】
#!/bin/bash
if [ $# -ne 1 ] || [ ${#1} -ne 8 ]
then
echo "Usage: bash $0 yyyymmdd"
exit 1
fi
datem=$1
year=${datem:0:4}
month=${datem:4:2}
day=${datem:6:2}
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通