【需求】
用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
审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
Shell
+关注
关注
1文章
376浏览量
25522 -
脚本
+关注
关注
1文章
413浏览量
29307
原文标题:写一个脚本判断日期是否合法
文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
一个判断操作系统的VBScript脚本代码
西门子触摸屏基于不同的Windows操作系统,有的是标准的Windows系统,有的是嵌入式操作系统Windows CE。这两种系统对于VBScript脚本的支持不同,因此在使用脚本编程之前,要判断当前屏幕是基于何种操作系统。今天
发表于 09-21 14:56
•1088次阅读
给你一篇部署文档,你能不能写一个脚本出来
谁一开始写shell脚本不是从流水账开始的?写着写着你就会发现,需要在哪里加判断,在哪里抛出异常。写着写着就知道何时用函数,何时用变量。写着写着你就会说,shell
发表于 11-23 09:07
•479次阅读
stm32 IAP例程跳转到APP区时为什么都会检查栈顶地址是否合法呢
在stm32 IAP例程中,跳转到APP区的时候,都会检查栈顶地址是否合法,以及reset地址是否正确等信息,那么这些判断具体依据什么原理???以stm32H743为例说明↓↓↓↓检查
发表于 02-15 06:35
stm32 BootLoader之检查栈顶地址是否合法
在stm32 IAP例程中,跳转到APP区的时候,都会检查栈顶地址是否合法,以及reset地址是否正确等信息,那么这些判断具体依据什么原理???以stm32H743为例说明↓↓↓↓检查
发表于 12-16 16:58
•11次下载
来练习一个写Redis部署的脚本
继Nginx和MySQL的部署脚本之后,相信只要你跟着写了,那么里面的很多关键精髓你已经知晓,今天就来练习一个写Redis部署的脚本吧。
如何判断一个软启动器是否故障
软启动器的主要构成是串接于电源与被控电机之间的三相反并联晶闸管及其电子控制电路。运用不同的方法,控制三相反并联晶闸管的导通角,使被控电机的输入电压按不同的要求而变化,就可实现不同的功能。判断一个
写一个脚本判断日期是否合法
评论