2013-02-23 3 views
0

Здесь переменная называется «мишенью»Regex и строки в кавычках

$ echo $_target 
x86_64-linux-gnu 

Этот тест регулярное выражение успешно ...

$ if [[ $_target =~ "x86_64" ]]; then echo "match"; fi 
match 

Но это не тест, чтобы увидеть, если выражение на начало строки. Позвольте мне добавить привязку к регулярному выражению:

$ if [[ $_target =~ "^x86_64" ]]; then echo "match"; fi 
$ 

Не указанная строка не указывает на совпадение. Weird.

Однако, если я снимаю кавычки вокруг регулярного выражения, все хорошо

$ if [[ $_target =~ ^x86_64 ]]; then echo "match"; fi 
match 

Почему котировки влияют на тест регулярное выражение? Что мне не хватает в моем понимании, чтобы удивляться, что второй тест выше не соответствует?

+4

возможно здесь: http://stackoverflow.com/questions/218156/bash-regex-with-quotes?rq=1 – pce

ответ

1

Вы не должны помещать правую часть оператора = ~ в кавычки, так как это будет означать строку, а не регулярное выражение. (source

Смежные вопросы