Разница между ~ и! в сценариях оболочки unix [закрыто]

Trivialmente:

echo -n 'The system time is '; date

Requiere echoque respeta el interruptor -n, pero tendría que buscar profundamente para encontrar un sistema donde no (o usarprintf).

-3
05.01.2017, 15:21
1 ответ

Сравнение ! = и = ~ похоже на сравнение яблок с апельсинами.

! = примерно означает «не равно», а = ~ означает «соответствует». Подробнее об этих операторах можно прочитать в разделе [[выражение]] в man bash . Вот выдержка из наиболее важных разделов:

  Когда используются операторы == и! =, Строка справа от 
оператора считается шаблоном и сопоставляется в соответствии с 
правила, описанные ниже в разделе «Сопоставление с образцом», как если бы была включена опция оболочки extglob 
. Оператор = эквивалентен оператору ==. Если 
параметр оболочки nocasematch включен, сопоставление выполняется 
без учета регистра буквенных символов. Возвращаемое значение 
равно 0, если строка соответствует (==) или не соответствует (! =) Шаблону 
, и 1 в противном случае. Любая часть шаблона может быть заключена в кавычки для 
принудительного сопоставления указанной в кавычках части как строки. 
 
Доступен дополнительный бинарный оператор = ~ с тем же { {1}} приоритет как == и! =. Когда он используется, строка справа от оператора 
считается расширенным регулярным выражением и 
соответствующим образом сопоставляется (как в regex (3)). Возвращаемое значение - 0, если строка 
соответствует шаблону, и 1 в противном случае. Если регулярное выражение 
синтаксически неверно, возвращаемое значение условного выражения 
равно 2. 
 
4
28.01.2020, 05:18

Теги

Похожие вопросы