Как построить регулярное выражение для сравнения строк без учета регистра в сценарии оболочки? - PullRequest
0 голосов
/ 23 декабря 2018

Я передаю аргументы командной строки в сценарий оболочки, и он сравнивается с регулярным выражением.В следующем коде учитывается регистр:

[[ $1 =~ ^(cat)|(dog)$ ]] && echo "match" || echo "no match"

Как я могу изменить это регулярное выражение, которое будет игнорировать регистры?Я мог бы передать cAt, и он должен совпадать.

Я хочу использовать флаг регулярного выражения /i, поскольку он игнорирует случаи.Но как мне использовать его внутри сценария оболочки?Я пробовал [[ $1 =~ /(cat)|(dog)/i ]], но скрипт завершился с синтаксической ошибкой.

У StackOverflow есть похожий вопрос, но он не отвечает на мой запрос. Я хочу использовать test для сравнения обоихстроки и не заинтересованы использовать shopt -s nocasematch или grep <expression>

1 Ответ

0 голосов
/ 23 декабря 2018

просто используйте

shopt -s nocasematch

перед вашей командой.

альтернативно

shopt -s nocasematch && [[ 'doG' =~ (cat)|(dog) ]] && echo 'hi' || echo 'no match'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...