我用=~判断单词边界
TEST="abc abc ab";if [[ $TEST =~ \<abc\> ]]; then echo 含有单词abc;fi
结果并没有匹配到abc
我用=~判断单词边界
TEST="abc abc ab";if [[ $TEST =~ \<abc\> ]]; then echo 含有单词abc;fi
结果并没有匹配到abc
根据你的描述,你的意思是想要看看字符串 abc abc ab
中是否含有 abc
这个子串。如果是这样,不太清楚你 \<abc\>
这样写是啥意思,为什么不直接 TEST="abc abc ab";if [[ $TEST =~ "abc" ]]; then echo 含有单词abc;fi
2 回答1.3k 阅读✓ 已解决
2 回答1.5k 阅读
1.3k 阅读
1 回答146 阅读
=~右边的值如果有引号,那=~等价于==,做字符串匹配,而不是正则表达式匹配;而如果不能把正则表达式放在引号里,一些特殊符号在bash里可能有特殊含义,所以在使用=~的时候,几乎都会把pattern定义在一个变量里,而且在[[]]中引用pattern的时候,也一定不能加引号。
如果不想定义变量,可以试试command substitution: