expr

Вычисление аргументов как выражения (POSIX)

Синтаксис:

expr операнд...

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

Neutrino

Опции:

операнд


Выражение для вычисления.

Описание:

Утилита expr используется для вычисления одиночного выражения; результат вычисления записывается в стандартный поток вывода. Выражение формируется из целочисленных и строковых символов в комбинации со следующими операторами:

( ) | & = > >= < <= != + - * / % :

В следующей таблице приведены выражения в порядке уменьшения приоритета, операторы с равным приоритетом сгруппированы вместе. Все операторы ассоциативны слева направо. Следует отметить, что строковый операнд – это аргумент, который не определяется как целочисленный аргумент или как один из приведенных выше операторов.

Выражение

Описание

целое число

Аргумент, состоящий только из (необязательного) одинарного минуса и последующих цифр

строка

Строковый аргумент

( выражение )

Символы группирования; внутри скобок можно поместить любое выражение.

выражение1 : выражение2

Сопоставление выражений

выражение1 * выражение2

Целочисленное умножение

выражение1 / выражение2

Целочисленное деление с целочисленным результатом

выражение1 % выражение2

Остаток от целочисленного деления

выражение1 + выражение2

Целочисленное сложение

выражение1 - выражение2

Целочисленное вычитание

выражение1 = выражение2

Равно*

выражение1 > выражение2

Больше*

выражение1 >= выражение2

Больше или равно*

выражение1 < выражение2

Меньше*

выражение1 <= выражение2

Меньше или равно*

выражение1 != выражение2

Не равно*

выражение1 & выражение2

Возвращается результат вычисления выражения выражение1, если ни в одном из выражений не получается результат, равный null или нулю, в противном случае – ноль.

выражение1 | выражение2

Возвращается результат вычисления выражения выражение1, если он не равен null или нулю; в противном случае возвращается результат вычисления выражения выражение2


* Возвращается результат десятичного целочисленного сравнения, если оба аргумента являются целыми числами (тип integer); в противном случае возвращается результат сравнения строк. Результат каждого сравнения равен 1, если указанное отношение равно TRUE, и 0, если – FALSE.

Оператор сопоставления ":" сравнивает регулярное выражение, полученное вычислением выражение2, с шаблоном регулярного выражения, полученному вычислением выражение1. Обычно этот оператор возвращает строку, обозначающую количество удачно сопоставленных символов ("0" в случае неудачи). Однако если в шаблоне содержится по крайней мере одно подвыражение регулярного выражения \(...\), то возвращается строка, соответствующая \1 (см. grep).

Примеры:

Сложение 1 и 1:

expr 1 + 1

Логическая 1 или 0:

expr 1 \| 0

Логическая 1 и 0:

expr 1 \& 0

Сложение 1 и $a :

expr $(expr $a + 1)

Подсчет символов в $var:

expr "$var" : '.*'

Сравнение $a с возможным =

expr x$a = x=

Статус завершения:

0

Результат вычисления выражения не равен null или нулю.

1

Результат вычисления выражения равен null или нулю.

2

Обнаружены недействительные выражения.

>2


Возникла ошибка.

Предупреждения:

Синтаксис команды expr требует особого внимания. Многие из операторов также являются операторами управления командного интерпретатора или зарезервированными словами, поэтому в командной строке их требуется экранировать. Кроме того, каждая часть выражения составляется из отдельных аргументов, поэтому следует использовать пробелы для их разделения. Пример.

Не рекомендуемый ввод

Рекомендуемый ввод

expr "1 + 2"

expr 1 + 2

expr 1 + (2 * 3)

expr 1 + \( 2 \* 3 \)

expr 1+2

expr 1 + 2


Во многих случаях проще использовать арифметические и строковые функции, предоставляемые в рамках командного языка интерпретатора команд, а не их эквиваленты из expr. Однако для выполнения старых сценариев командного интерпретатора UNIX может потребоваться утилита expr.

Если необходимо указать корень файловой системы, следует избегать использования отдельно стоящего символа / - он воспринимается командой expr как оператор деления. Его следует удвоить //.