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

萌新求教!shell [[ ]] 如何使用=~(正则)判断单词边界

萌新求教!shell [[ ]] 如何使用=~(正则)判断单词边界

江户川乱折腾 2019-08-17 09:45:37
我用=~判断单词边界TEST="abcabcab";if[[$TEST=~\]];thenecho含有单词abc;fi结果并没有匹配到abc
查看完整描述

2 回答

?
皈依舞

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

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

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

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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号