shell [[ ]] 如何使用=~(正则)判断单词边界

我用=~判断单词边界
TEST="abcabcab";if[[$TEST=~\]];thenecho含有单词abc;fi
结果并没有匹配到abc
九州编程
浏览 775回答 2
2回答

波斯汪

=~右边的值如果有引号,那=~等价于==,做字符串匹配,而不是正则表达式匹配;而如果不能把正则表达式放在引号里,一些特殊符号在bash里可能有特殊含义,所以在使用=~的时候,几乎都会把pattern定义在一个变量里,而且在[[]]中引用pattern的时候,也一定不能加引号。如果不想定义变量,可以试试commandsubstitution:if[[$TEST=~$(echo"\")]];thenecho含有单词abc;fi

智慧大石

根据你的描述,你的意思是想要看看字符串abcabcab中是否含有abc这个子串。如果是这样,不太清楚你\这样写是啥意思,为什么不直接TEST="abcabcab";if[[$TEST=~"abc"]];thenecho含有单词abc;fi
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript