Bash shell:如何检查特定的日期格式?

2023-12-04

我有一个 Bash shell 脚本,用于检查 shell 变量是否包含数字:

   if ! [[ "$step" =~ ^[0-9]+$ ]]
   then
     exec >&2; echo "error: $step is Not a step number.";
     exit 1
   fi

现在我需要执行类似的检查来查看变量是否包含所需格式的日期,即YYYY-MM-DD (示例:今天是 2013 年 5 月 13 日)与破折号。如何使用 Bash shell 中的正则表达式来完成此操作,或者我是否需要外部程序来完成此操作?


正则表达式不是完成这项工作的正确工具。

e.g.

2013-02-29 (invalid date)
2012-02-29 (valid date)
2013-10-31 (valid date)
2013-09-31 (invalid date)
...

我建议将字符串传递给date -d,然后检查返回值。如果返回0,则一切正常。如果返回1,则日期无效。

例如:

kent$  date -d "2012-02-29" > /dev/null 2>&1
kent$  echo $?
0

kent$  date -d "2013-02-29" > /dev/null 2>&1
kent$  echo $?
1

如果你想强制格式是yyyy-mm-dd你可以做正则表达式和date验证。正则表达式仅用于格式,日期用于日期验证。

because date -d接受类似字符串02/27/2012 too.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bash shell:如何检查特定的日期格式? 的相关文章

  • javascript regex:只允许使用英文字母

    快速问题 我需要允许输入仅接受从 a 到 z 和从 A 到 Z 的字母 但找不到任何表达式 我想使用 javascript test 方法 let res a zA Z test sfjd console log res 注意 如果你有任何
  • 正则表达式查找 bcrypt 哈希值?

    我正在寻找使用正则表达式 在 PowerGrep 中 在数据库中查找 bcrypt 哈希字符串 尝试了这个正则表达式 A Za z 0 9 60 但没有找到匹配项 Bcrypt 哈希长度为 60 个字符 以 2y 开头 Example 2y
  • 将存储在变量中的正则表达式与量词组合的正确语法是什么?

    我知道堆栈溢出中已经有很多关于在正则表达式中使用变量的问题 并且如果变量是一个单词 或者只需要匹配一次 我设法使其工作 但是 一旦我添加特殊字符 空格和量词 我就无法让它匹配 例如 我想匹配中的任何内容some var任何包含它的 3 个连
  • JavaScript 上的正则表达式;检查多个字符串之一的实例

    我已经做了很多服务器端表单验证 但到目前为止 我所做的唯一客户端表单验证是检查 null 空白条目 例如 if value value null 我现在正在检查用户输入的粗俗内容 并发现使用 javascript 成功检查了这些内容 合并到
  • 正则表达式 在 Coldfusion 中匹配整个单词字符串

    我正在尝试这个例子 第一个例子 keyword star myString The dog sniffed at the star fish and growled regEx b keyword b if reFindNoCase reg
  • 转义 re.sub 的 repl 参数

    我想确定repl的论证re sub是转义 因此任何特殊序列如 1不被解释 gt gt gt repl r 1 gt gt gt re sub X repl X X gt gt gt re sub X desired escape funct
  • 当远程(Http)文件更改时如何执行操作?

    我想创建一个脚本 用于检查 URL 并在远程文件的 Last Modified 标头更改时执行操作 下载 解压缩 我考虑过使用curl 获取标头 但随后我必须将其存储在每个文件的某个位置并执行日期比较 有没有人对使用 大部分 标准 UNIX
  • sed:用匹配的模式替换第 n 个单词?

    我有一个具有以下特征的文本文件 每行至少有三个由空格分隔的 单词 单词 可以是任何字符或字符串 我在一些行中附加了一些注释 并提出了对原始单词进行更改的初步建议 现在想使用 sed 为我进行这些更改 因此 为了提供更清晰的图片 我的文件如下
  • 仅匹配单词或字符串中的撇号

    我正在寻找一个可以匹配的Python正则表达式 didn t 并仅返回紧接在撇号前面的字符 例如 t 但不是 d or t 在开始和结束时 我努力了 w w 但它只匹配开头的撇号 更多示例 I m 应该只匹配 m并不是 I Erick s
  • python中的多服务器监控/自动重启

    我有 2 个服务器程序 必须使用 GNU Screen 启动 我想使用基于 Python 的程序来强化这些服务器 防止崩溃 该程序启动每个屏幕会话 然后监视服务器进程 如果服务器进程崩溃 我需要 python 代码来终止无关的屏幕会话并再次
  • 寻找 shell 重定向交错行为的解释

    给定以下脚本 t sh bin bash if eq 0 then log if gt 0 then printf s n else cat fi tee a logged out else log if gt 0 then printf
  • 如何验证电子邮件地址与网站域名是否匹配?

    我的表单上有 2 个输入字段 电子邮件和网站 如何使用 JQuery 验证电子邮件地址域必须与网站域匹配 例如 如果网站是http example com http example com或带 www 或不带 http 或不带http ww
  • Pandas 字符串提取所有匹配项

    我正在学习 pandas 系列字符串方法中的正则表达式操作 我能够从字符串中提取第一个数字 但我的正则表达式与第二个数字不匹配 如何捕获这两个数字 注意第二行 第二个元素在这里是 NAN CODE import pandas as pd d
  • 使用环境变量将参数传递给命令

    我正在尝试编写一个 bash 脚本 该脚本采用环境变量并将其传递给命令 所以如果我有类似的东西 export OUT a arg1 b arg2 0 arg2 1 我想在我的 bash 脚本中执行以下操作
  • 错误:选项“Z”仅在夜间编译器上被接受[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在通过斯坦福操作系统课程 cs140e https web stanford edu class cs140e 其中一个问题是 有一个名
  • Python 按照层次结构按多个分隔符分割字符串

    我只想根据多个分隔符 例如 and 和 按顺序分割字符串一次 例子 121 34 adsfd gt 121 34 adsfd dsfsd and adfd gt dsfsd adfd dsfsd adfd gt dsfsd adfd dsf
  • 为什么 sed 将替换文本放在行首?

    在 Mac OS X bash 上 我在命令行中使用以下 sed sed s S 1 file1 txt gt file2 txt file1 txt有这样的行 some path to somewhere some stuff here
  • 忽略正则表达式匹配的嵌套括号内的逗号

    我有以下正则表达式 s s g这允许我匹配由逗号分隔的元素 同时忽略内部的逗号 有这个 a b c aaa bbb ccc d 我明白了 a b c aaa bbb ccc d 现在 我想升级它以考虑另一个级别的括号 我不想考虑任何级别 我
  • 转换MAC地址格式

    我刚刚编写了一个小脚本 从交换机中提取数百个 MAC 地址进行比较 但它们的格式为 0025 9073 3014 而不是标准的 00 25 90 73 30 14 我对如何转换它感到困惑 我能想到的最好的办法就是在 处将它们分解成碎片 然后
  • 使正则表达式以惰性方式匹配,同时跳过一些单词

    我想要正则表达式 其中包括跳过一些单词以惰性方式匹配 例如 正则表达式 all s S 0 10 s Damages amount s S 0 10 s in s excess s of 示例文本 第 8 1 a 条规定的所有此类损害超出免

随机推荐

  • 为什么 strchr 比我的 simd 代码快两倍

    我正在学习 SIMD 并且很好奇是否有可能在查找字符方面击败 strchr 看起来 strchr 使用相同的内在函数 但我假设它检查空值 而我知道该字符在数组中并计划避免空值检查 我的代码是 size t N 1e9 bool found
  • Android 中的垂直画廊

    我正在开发一个应用程序 为此我需要将图库设置为垂直模式而不是水平模式 我的问题是 我是否有可能展示垂直画廊类型的小部件 任何帮助表示赞赏 你为什么不创建一个列表视图的自定义适配器 如果你定义一个具有一个图像视图的自定义适配器那么它将与垂直画
  • 按内容查找 html 元素并使用 jQuery 隐藏

    我正在尝试使用 jquery 查找某些 HTML 中的某些元素 我想查找并隐藏包含标签文本 这是我的测试标签 和 Yest another test label 的列表 id ul class top level list li class
  • 如何在Excel VBA中给出小于一秒的时间延迟?

    我想在小于 1 秒的特定持续时间后重复一个事件 我尝试使用以下代码 Application wait Now TimeValue 00 00 01 但这里的最小延迟时间是一秒 如何延迟半秒 您可以使用 API 调用和睡眠 将其放在模块的顶部
  • 使用displaytag+tiles导出excel的问题

    显示标签 1 2 弹簧 MVC 2 5 6 瓷砖2 0 7 我已经查看了该网站上围绕同一主题区域的其他一些项目 但似乎没有回答如何将显示标记生成的表格导出到 Excel 的问题 我可以导出 保存 xml 和 csv 但不能导出 保存 exc
  • Xcode iOS 按下按钮,然后向上拖动第二个按钮

    假设我想给一个整数加 1 这只有当我按下一个按钮时才会完成UIButton然后松开我的手指到另一个UIButton 拖拽组合 我可以做的最简单的方法是什么IBAction出现在组合中 这可以通过触摸坐标来完成 或者只是UIButtons a
  • 如何在没有时间的情况下获取当前日期?

    我可以使用以下方法获取日期和时间 DateTime now DateTime Now 如何以 DateTime 格式单独获取当前日期和时间 我没有使用 ASP NET C 中的日期时间选择器对话框 好吧 您可以将今天的日期作为DateTim
  • PHPmail 函数中的“无法访问文件:”

    我正在尝试使用 PHPMailer 通过电子邮件发送服务器上存在的文件 当我运行此代码时 我收到 无法访问文件 并且发送的电子邮件没有附件 任何人都可以指导我如何解决此问题 checkyes POST check date date Y m
  • Yahoo! 上的正则表达式管道

    我在胡闹雅虎 管道我在一些正则表达式方面碰壁了 现在我熟悉了 Perl 中的正则表达式 但 Yahoo 中的规则似乎有所不同 管道 我正在做的是获取一个页面并尝试将其转换为提要 我的正则表达式用于从 HTML 中删除链接 效果很好 但我想要
  • Inno Setup - 从外部源(文件或文件夹内容)创建组件/类型的动态列表

    我有一个批处理文件 设置更改器 它使用 xcopy 列出特定文件夹中的特定文件格式 然后允许我输入其中一个名称 脚本使用该名称将该文件复制到另一个位置 首先 xcopy 创建原始副本作为备份 滚动备份仅 1 份 然后进行文件复制 扩展名在批
  • 错误 A2070:在汇编语言中使用嵌套 while 循环时指令操作数无效

    我正在尝试使用 Masm 在汇编中嵌套 while 循环 我在第 15 行 即运行以下代码时内部 while 循环的 endw 指令 收到 错误 A2070 无效指令操作数 INCLUDE Irvine32 inc data i byte
  • apache 无法正确提供静态内容

    我一直在开发自己的 mvc 框架来进一步学习 Web 应用程序 但在提供静态资源时遇到问题 我试图在应用程序中有一个入口点 也称为前端控制器 所以在我的项目中 我有一个 htaccess 文件 它将所有请求重定向到 app 文件夹 其中另一
  • 将两个不同的结构传递给同一个函数

    我有 2 个不同大小的结构 我希望有一个可以将它们传递到其中的函数 但是 我不知道如何定义函数的参数来接受 2 个不同的结构 我的结构如下 struct int a 2 byte int b 2 byte int c 2 byte int
  • 已部署动态 Web 项目的 WebSphere ClassNotFoundException

    Problem 我目前在 WebSphere 7 0 应用程序服务器上部署的 EAR 带有 OpenFaces Web 项目 遇到 ClassNotFoundException EAR 部署没有问题 但是当我从 Web 项目 包含在 EAR
  • 警告:函数“strcmp”的隐式声明[重复]

    这个问题在这里已经有答案了 创建一个简单的代码来扫描两个数字 询问用户是否想要将它们相加或相乘 然后执行运算并打印输出 include
  • BorderLayout 无法正确显示

    我想要一个 JFrame 其中左侧和右侧有一个边框 颜色为黑色 宽度为 withfOfJFrame 10 现在 我的尝试如下所示 JFrame f new JFrame f setSize 800 600 f setLayout new B
  • Rails 4 - Pundit - 索引范围策略

    我正在尝试学习如何将 Pundit 与我的 Rails 4 应用程序一起使用 我有以下型号 class User lt ActiveRecord Base has one profile has many eois end class Pr
  • 任务 MaxDegreeOfParallelism 可以每次从我的列表中获取前 n 个对象吗?

    我正在打开n我的函数中的并发线程 List
  • 查找来自 Service Worker 的活动推送通知的数量

    我已经使用 Service Worker 实现了推送通知 有什么方法可以找出窗口中当前显示的通知数量 我的目的是限制窗口中显示的通知数量 我尝试了以下方法 但 getNotifications 函数返回空数组 self addEventLi
  • Bash shell:如何检查特定的日期格式?

    我有一个 Bash shell 脚本 用于检查 shell 变量是否包含数字 if step 0 9 then exec gt 2 echo error step is Not a step number exit 1 fi 现在我需要执行