Подтвердить что ты не робот

Оператор Bash regex = ~

Что вызывает оператор =~? Используется ли только для сравнения правой стороны с левой стороной?

Почему для запуска теста требуются двойные квадратные скобки?

т. [[ $phrase =~ $keyword ]]

Спасибо

4b9b3361

Ответ 1

  • Что называется оператор =~?

    Я не уверен, что у него есть имя. Документация bash просто называет это оператором =~.

  • Используется ли только для сравнения правой стороны с левой стороной?

    Правая часть считается расширенным регулярным выражением. Если левая сторона соответствует, оператор возвращает 0 и 1 в противном случае.

  • Почему для запуска теста требуются двойные квадратные скобки?

    Потому что =~ является оператором команды [[ expression ]].

Ответ 2

Оператор =~ является оператором соответствия регулярному выражению. Этот оператор вдохновлен использованием Perl одного и того же оператора для согласования регулярных выражений.

[[ ]] обрабатывается специально bash; что расширенная версия конструкции [ ]:

  • [ ] на самом деле является встроенной в оболочку командой, которая фактически может быть реализована как внешняя команда. Посмотрите на ваш /usr/bin, скорее всего, программа называется "[" там! Строго говоря, [ ] не является частью синтаксиса bash.

  • [[ ]] - это ключевое слово shell, что означает, что оно является частью синтаксиса оболочки. Внутри этой конструкции некоторые зарезервированные символы меняют смысл. Например, ( ) означает скобки, подобные другим языкам программирования (не запуская подоболочку для выполнения того, что внутри пасетов). Другим примером является то, что < и > означает меньше и больше, чем перенаправление оболочки. Это позволяет более "естественный" вид логических выражений, но может быть запутанным для начинающих программистов bash.

Wirawan