Regex bash中带有正则表达式的If语句不起作用
有两条if语句将文件名与类型为YYYYMMDD和YYYY-MM-DD的日期相匹配,并且租赁零件的文件名不包含名称。现在if语句不起作用,代码总是转到else部分 例:Regex bash中带有正则表达式的If语句不起作用,regex,bash,if-statement,Regex,Bash,If Statement,有两条if语句将文件名与类型为YYYYMMDD和YYYY-MM-DD的日期相匹配,并且租赁零件的文件名不包含名称。现在if语句不起作用,代码总是转到else部分 例: \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:bash的正则表达式引擎似乎没有将\d识别为[[:digit:][]的快捷方式。(注意:我通过创建一个简单的
\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:bash的正则表达式引擎似乎没有将
\d
识别为[[:digit:][]
的快捷方式。(注意:我通过创建一个简单的示例发现了这一点:[[1=~\d]]&&echo match
)变量名中的连字符是打字错误还是某种参数替换语法?
If [[ ${data-file} =~ ([12]\d{3}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])) ]]