如果在bash中使用正则表达式的语句不起作用

时间:2019-06-27 05:46:01

标签: regex bash if-statement

具有两个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])) ]]

1 个答案:

答案 0 :(得分:0)

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

ref:How to match digits in regex