首页 > 解决方案 > 如果在 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])) ]]

标签: regexbashif-statement

解决方案


\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]))

参考:如何匹配正则表达式中的数字


推荐阅读