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