0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

阿铭linux 来源:阿铭linux 2022-12-30 09:14 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

【需求】

用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

    文章

    373

    浏览量

    25164
  • 脚本
    +关注

    关注

    1

    文章

    407

    浏览量

    29050

原文标题:写一个脚本判断日期是否合法

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    判断操作系统的VBScript脚本代码

    西门子触摸屏基于不同的Windows操作系统,有的是标准的Windows系统,有的是嵌入式操作系统Windows CE。这两种系统对于VBScript脚本的支持不同,因此在使用脚本编程之前,要判断当前屏幕是基于何种操作系统。今天
    发表于 09-21 14:56 913次阅读

    工作中这种检测脚本太常见了

    检测脚本,用来检测本机所有磁盘分区读写是否都正常。
    发表于 11-07 09:42 555次阅读

    给你篇部署文档,你能不能写脚本出来

    开始shell脚本不是从流水账开始的?写着写着你就会发现,需要在哪里加判断,在哪里抛出异常。写着写着就知道何时用函数,何时用变量。写着写着你就会说,shell
    发表于 11-23 09:07 370次阅读

    flash,要不要加个判断

    flash,要不要加个判断?”这是我朋友的提问。
    的头像 发表于 11-21 10:07 1242次阅读
    <b class='flag-5'>写</b>flash,要不要加个<b class='flag-5'>判断</b>?

    stm32 IAP例程跳转到APP区时为什么都会检查栈顶地址是否合法

    在stm32 IAP例程中,跳转到APP区的时候,都会检查栈顶地址是否合法,以及reset地址是否正确等信息,那么这些判断具体依据什么原理???以stm32H743为例说明↓↓↓↓检查
    发表于 02-15 06:35

    如何判断可控硅的三极?如何判断可控硅是否损坏?

    如何判断可控硅的三极?如何判断可控硅是否损坏?
    发表于 03-02 17:11 1.2w次阅读

    C语言教程之判断是否存在数组中

    C语言教程之判断是否存在数组中,很好的C语言资料,快来学习吧。
    发表于 04-25 15:13 0次下载

    stm32 BootLoader之检查栈顶地址是否合法

    在stm32 IAP例程中,跳转到APP区的时候,都会检查栈顶地址是否合法,以及reset地址是否正确等信息,那么这些判断具体依据什么原理???以stm32H743为例说明↓↓↓↓检查
    发表于 12-16 16:58 11次下载
    stm32 BootLoader之检查栈顶地址<b class='flag-5'>是否</b><b class='flag-5'>合法</b>

    自动化重启服务脚本

    脚本可以每分钟执行次,脚本执行时截取上分钟的日志,可以计算总日志行数,和出现502的行数,计算比例,这里我给大家定
    的头像 发表于 11-22 10:12 1690次阅读

    来练习Redis部署的脚本

    继Nginx和MySQL的部署脚本之后,相信只要你跟着写了,那么里面的很多关键精髓你已经知晓,今天就来练习Redis部署的脚本吧。
    的头像 发表于 12-01 09:16 1247次阅读

    监控你的站点访问是否正常

    监控脚本,监控某站点访问是否正常。
    的头像 发表于 12-06 14:38 1279次阅读

    编写点名器脚本

    目的:编写脚本,可以将准别好的名字合集的.txt传入脚本,然后每次随机显示一个人的姓名
    的头像 发表于 11-06 12:41 1021次阅读
    编写<b class='flag-5'>一</b><b class='flag-5'>个</b>点名器<b class='flag-5'>脚本</b>

    如何判断连接器是否需要更换?

    如何判断连接器是否需要更换? 判断连接器
    的头像 发表于 01-30 16:51 1405次阅读

    如何判断继电器是否正常工作

    判断继电器是否正常工作是涉及多个方面的过程,主要包括外观检查、电气性能测试以及实际应用中的表现等。以下将从这些方面详细阐述如何判断继电器
    的头像 发表于 09-10 11:06 2530次阅读

    如何判断软启动器是否故障

    软启动器的主要构成是串接于电源与被控电机之间的三相反并联晶闸管及其电子控制电路。运用不同的方法,控制三相反并联晶闸管的导通角,使被控电机的输入电压按不同的要求而变化,就可实现不同的功能。判断
    的头像 发表于 04-10 07:34 1539次阅读
    如何<b class='flag-5'>判断</b><b class='flag-5'>一</b><b class='flag-5'>个</b>软启动器<b class='flag-5'>是否</b>故障