expr

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

expr — программа в UNIX‐подобных ОС, вычисляющая значение выражения и выводящая результат на стандартный вывод. Каждая лексема выражения должна быть отдельным аргументом. Операнды могут быть как числами, так и строками. Строковые операнды не надо заключать в кавычки, хотя это, может быть, и необходимо сделать для предотвращения интерпретации их шеллом. expr определяет тип операнда (целое число или строка) по применяемой к нему операции.

Использование

[править | править код]
  • expr выражение…
  • expr {--help,--version}

Поддерживаемые операторы

[править | править код]

Действительны следующие операторы (в порядке возрастания приоритета):

  • |дизъюнкция
  • &конъюнкция
  • < <= = == != >= > — сравнить аргументы и возвратить 1, если операция отношения верна, и 0 в противном случае. (== является синонимом =.) expr пытается привести оба аргумента к числовому типу и произвести числовое сравнение; если приведение не удаётся произвести хотя бы для одного аргумента, то производится лексикографическое (строковое) сравнение
  • - — произвести указанные арифметические операции. Перед этим оба аргумента приводятся к числовому типу; если это нельзя сделать, выдаётся сообщение об ошибке
  • * / % — произвести указанные арифметические операции («%» — это операция деления по модулю, как в C). Перед этим оба аргумента приводятся к числовому типу; если это нельзя сделать, выдаётся сообщение об ошибке
  • : — произвести поиск по шаблону. Оба аргумента приводятся к строковому типу, при этом второй считается регулярным выражением с неявно добавленным символом «^» в начале. После этого в первом аргументе производится поиск по второму в качестве шаблона. Если найдено соответствие и часть строки выделена символами «(» и «)», то значением операции : является эта часть; в противном случае возвращается целое число, равное количество символов, соответствующих шаблону. Если соответствие не найдено и часть строки выделена символами «(» и «)», то результатом операции : является пустая строка, в противном случае 0. При задании шаблона может быть использована только одна пара скобок «(» и «)»

Дополнительно распознаются следующие ключевые слова:

  • match строка рег_выр — ещё один способ произвести поиск по шаблону. Это выражение идентично «строка : регулярное_выражение»
  • substr строка позиция длина — возвращает подстроку в строке, начинающуюся с указанной позиции и не больше указанной длины. Если позиция либо длина отрицательны или не являются числами, вернуть пустую строку
  • index строка класс-символов — возвращает позицию в строке, в которой был впервые найден символ из класса-символов. Если ни одного такого символа не было найдено, вернуть 0
  • length строка — возвращает длину строки

Для группировки можно применять круглые скобки. В качестве строковых операндов нельзя использовать ключевые слова.

  • expr(1) — страница справки man по пользовательским командам GNU/Linux  (англ.) (см. GNU Coreutils)
  • expr(1) — страница справки man по пользовательским командам OpenBSD  (англ.)
  • expr(1) — страница справки man по пользовательским командам FreeBSD  (англ.)