当我输入
$ expr match "can't find" 'c'
$ 1
然后我输入
$ expr match "234can't find" 'c'
$ 0
我想不通为什么?
版本的man
页面expr
不是很清楚:
STRING : REGEXP
anchored pattern match of REGEXP in STRING
match STRING REGEXP
same as STRING : REGEXP
“锚定”究竟是什么意思?BSD 版本澄清了一切:
正则表达式使用隐含的“^”锚定到字符串的开头。
Soexpr match "234can't find" 'c'
与 相同expr match "234can't find" '^c'
,并且由于您的字符串不以 a开头c
,因此匹配失败。
由于bash
本机支持正则表达式匹配,您可以放弃该expr
命令以支持
[[ "234can't find" =~ c ]]