Какие RE могут использовать оператор = ~

На странице man для bash это говорит об операторе =~ :

Доступен дополнительный бинарный оператор, = ~, с тем же приоритетом, что и == и! =. Когда он используется, строка справа от оператора считается расширенным регулярным выражением и соответствующим образом соответствует (как в regex (3) )

Тем не менее, я считаю, что даже тривиальные RE не работают. Вот мой пример использования:

 n='hello' [[ "$n" =~ 'llo' ]] && echo yes || echo no # <-- yes [[ "$n" =~ 'llo$' ]] && echo yes || echo no # <-- no 

Учитывая, что $ является стандартным индикатором RE для EOL, почему второе сравнение возвращает «нет»?

  • простая команда для удаления заголовка и нижнего колонтитула из файла
  • Regex: как проверить, что есть 13 греческих букв с нечетным количеством согласных
  • Арифметические операции в регулярном выражении
  • sed заменяет только несколько регулярных выражений букв
  • регулярное выражение для извлечения информации в сценарии оболочки
  • vim заменить текст поиска, используя текст поиска
  • Правило перенаправления Apache с использованием регулярного выражения
  • Тестирование RegExp с зольной оболочкой (BusyBox)
  • One Solution collect form web for “Какие RE могут использовать оператор = ~”

    Вы не читали страницу руководства тщательно, он также сказал:

    Любая часть шаблона может быть процитирована, чтобы заставить цитированную часть соответствовать строке.

    Таким образом, $ в вашей строке означает буквальный знак доллара вместо конца строки. Перемещение $ из строки, чтобы заставить ее работать:

     $ [[ "$n" =~ 'llo'$ ]] && echo yes || echo no yes 
    Linux и Unix - лучшая ОС в мире.