bash测试条件中的正则表达式必须不带引号
环境
1 | ipv4_pattern="((1[0-9][0-9]\.)|(2[0-4][0-9]\.)|(25[0-5]\.)|([1-9][0-9]\.)|([0-9]\.)){3}((1[0-9][0-9])|(2[0-4][0-9])|(25[0-5])|([1-9][0-9])|([0-9]))" |
复现
结果没有输出yes,正则表达式无法匹配192.168.2.1
解决
bash测试条件中的正则表达式不能使用引号包围起来,不管是字面量字符串还是变量都不允许带引号。
在测试条件中=~
的右侧必须处于没有引号的状态,正则表达式才会起效果,否则会将正则表达式当成普通字符串去与左侧字符串相比较。
1 | ipv4_pattern="192.168.2.1" |