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

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

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

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

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

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

  • Как выбрать первое совпадение между двумя шаблонами, включая их
  • Развернуть регулярное выражение на нескольких строках в Vim
  • Что такое регулярное выражение в этой установке пакета?
  • Sed: изменить каждое повторение не первого слова для каждого слова в тексте
  • bash regex: метасимвол asterisk убивает избыточные символы новой строки
  • Сопоставьте одну часть регулярного выражения в регулярном выражении Kwrite find-and-replace
  • Как слить текст буквенных строк с числовыми строками в оболочке?
  • искать и заменять номера в vim
  • One Solution collect form web for “Какие RE могут использовать оператор = ~”

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

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

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

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