Что вызывает оператор =~? Используется ли только для сравнения правой стороны с левой стороной?
Почему для запуска теста требуются двойные квадратные скобки?
т. [[ $phrase =~ $keyword ]]
Спасибо
Что вызывает оператор =~? Используется ли только для сравнения правой стороны с левой стороной?
Почему для запуска теста требуются двойные квадратные скобки?
т. [[ $phrase =~ $keyword ]]
Спасибо
Что называется оператор
=~?
Я не уверен, что у него есть имя. Документация bash просто называет это оператором =~.
Используется ли только для сравнения правой стороны с левой стороной?
Правая часть считается расширенным регулярным выражением. Если левая сторона соответствует, оператор возвращает 0 и 1 в противном случае.
Почему для запуска теста требуются двойные квадратные скобки?
Потому что =~ является оператором команды [[ expression ]].
Оператор =~ является оператором соответствия регулярному выражению. Этот оператор вдохновлен использованием Perl одного и того же оператора для согласования регулярных выражений.
[[ ]] обрабатывается специально bash; что расширенная версия конструкции [ ]:
[ ] на самом деле является встроенной в оболочку командой, которая фактически может быть реализована как внешняя команда. Посмотрите на ваш /usr/bin, скорее всего, программа называется "[" там! Строго говоря, [ ] не является частью синтаксиса bash.
[[ ]] - это ключевое слово shell, что означает, что оно является частью синтаксиса оболочки. Внутри этой конструкции некоторые зарезервированные символы меняют смысл. Например, ( ) означает скобки, подобные другим языкам программирования (не запуская подоболочку для выполнения того, что внутри пасетов). Другим примером является то, что < и > означает меньше и больше, чем перенаправление оболочки. Это позволяет более "естественный" вид логических выражений, но может быть запутанным для начинающих программистов bash.
Wirawan