проблема совпадения expr в оболочке - PullRequest
0 голосов
/ 21 июля 2011

В сценарии оболочки sh я написал следующее:

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

но я получаю эту ошибку при запуске:

expr: syntax error  

Что я делаю не так?Я получаю ту же ошибку, когда делаю opr равным - и /.

Еще одна интересная вещь, которую я обнаружил, - когда я написал это:

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

, возвращается:

1  

Это означает, что строка «a» соответствует одному из +, -, x и /.Но это не имеет смысла!

1 Ответ

1 голос
/ 21 июля 2011

Первый случай: +

+ имеет специальное значение для выражения:

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

Второй случай: a

Ваше регулярное выражение являетсяоперация диапазона, сопоставление символов от + до x, что включает большинство чисел.Чтобы символ - соответствовал буквально в charclass, он должен быть первым или последним символом;обратная косая черта не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...