shell中的expr匹配问题

时间:2011-07-21 00:09:18

标签: regex shell match

在sh shell脚本中,我写了以下内容:

opr=+  
echo `expr match "$opr" '[+\-x/]'`  

但是我在运行时遇到了这个错误:

expr: syntax error  

我做错了什么?当我使opr等于 - 和/。

时,我得到了同样的错误

我发现的另一个有趣的事情是我写这篇文章时:

opr=a  
echo `expr match "$opr" '[+\-x/]'`  

它返回:

1  

这意味着它将字符串“a”与+, - ,x和/中的一个匹配。但这没有任何意义!

1 个答案:

答案 0 :(得分:1)

第一种情况:+

+对expr有特殊含义:

   + TOKEN
          interpret TOKEN as a string, even if it is a
          keyword like `match' or an operator like `/'

第二种情况:a

你的正则表达式是一个范围操作,匹配从+x的字符,其中包括大多数alnums。要使-字面上与charclass匹配,它必须是第一个或最后一个字符;反斜杠它不起作用。