我用=~判断单词边界TEST="abcabcab";if[[$TEST=~\]];thenecho含有单词abc;fi结果并没有匹配到abc
2 回答
波斯汪
TA贡献1811条经验 获得超4个赞
=~右边的值如果有引号,那=~等价于==,做字符串匹配,而不是正则表达式匹配;而如果不能把正则表达式放在引号里,一些特殊符号在bash里可能有特殊含义,所以在使用=~的时候,几乎都会把pattern定义在一个变量里,而且在[[]]中引用pattern的时候,也一定不能加引号。如果不想定义变量,可以试试commandsubstitution:if[[$TEST=~$(echo"\")]];thenecho含有单词abc;fi
智慧大石
TA贡献1946条经验 获得超3个赞
根据你的描述,你的意思是想要看看字符串abcabcab中是否含有abc这个子串。如果是这样,不太清楚你\这样写是啥意思,为什么不直接TEST="abcabcab";if[[$TEST=~"abc"]];thenecho含有单词abc;fi
添加回答
举报
0/150
提交
取消