regex - 如果在 bash 中使用正则表达式的语句不起作用
问题描述
有两个 if 语句将文件名与 YYYYMMDD 和 YYYY-MM-DD 类型的日期匹配,并且租约部分的文件名不包含名称。现在 if 语句不起作用,代码总是转到 else 部分。
前任:
If [[ ${data-file} =~ ([12]\d{3}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])) ]]
解决方案
\d
不是 bash 中有效的正则表达式快捷方式。使用[0-9]
或[[:digit:]]
代替。
${data-file} =~ ([12][0-9]{3}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01]))
推荐阅读
- powershell - 任务计划程序“CylancePROTECT”不执行 PowerShell 脚本
- qgis - 在QGIS字段计算器中计算两点之间的距离
- ios - 当某些特定的文本字段被键盘隐藏时,如何向上移动表格视图?
- python - 我可以使用函数参数在 Python 中重新定义变量吗?
- wav - 如何将 .opus 文件转换为 .wav 文件
- android - 运行时的xml布局预览和activity不一致
- firebase - 用户使用 FirebaseAuth 在 Flutter 中注册 Android 应用后导航到页面
- macos - 我在 SwiftUI 中的 macOS 应用程序,计时器在窗口(NSWindow)关闭后从不停止
- registry - Windows 2020 年 5 月 10 日更新中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FeatureManagement\Overrides\4\ Hive 的用途
- javascript - 如何使用 RequireJs 删除我的模块