Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex bash中带有正则表达式的If语句不起作用_Regex_Bash_If Statement - Fatal编程技术网

Regex bash中带有正则表达式的If语句不起作用

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:][]的快捷方式。(注意:我通过创建一个简单的

有两条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:][]
的快捷方式。(注意:我通过创建一个简单的示例发现了这一点:
[[1=~\d]]&&echo match
)变量名中的连字符是打字错误还是某种参数替换语法?
If [[ ${data-file} =~ ([12]\d{3}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])) ]]