为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2019-05-20 09:33:21
我用=~判断单词边界TEST="abcabcab";if[[$TEST=~\]];thenecho含有单词abc;fi结果并没有匹配到abc
查看完整描述

2 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

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

TA贡献1946条经验 获得超3个赞

根据你的描述,你的意思是想要看看字符串abcabcab中是否含有abc这个子串。如果是这样,不太清楚你\这样写是啥意思,为什么不直接TEST="abcabcab";if[[$TEST=~"abc"]];thenecho含有单词abc;fi
                            
查看完整回答
反对 回复 2019-05-20
  • 2 回答
  • 0 关注
  • 774 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信