Оригинальный автор(ы) | Дик Хейт ( AT&T Bell Laboratories ) |
---|---|
Разработчик(и) | Различные разработчики открытого и коммерческого ПО |
Первоначальный выпуск | 1979 ( 1979 ) |
Операционная система | Unix , Unix-подобный , IBM i |
Платформа | Кроссплатформенный |
Тип | Команда |
expr — это утилита командной строки в Unix и Unix-подобных операционных системах , которая вычисляет выражение и выводит соответствующее значение. Впервые она появилась в Unix v7 . Команда доступна для Microsoft Windows как часть коллекции UnxUtils [1] собственных портов Win32 распространенных GNU Unix-подобных утилит. [2] Команда expr также была перенесена в операционную систему IBM i . [3 ]
expr оценивает целочисленные или строковые выражения, включая регулярные выражения сопоставления с шаблоном . Каждый символ (оператор, значение и т. д.) в выражении должен быть указан как отдельный параметр. Большая часть проблем, возникающих при написании выражений, заключается в том, чтобы не допустить воздействия вызывающей оболочки командной строки на символы, предназначенные для обработки expr .
Синтаксис: expr выражение
Доступные операторы
Ниже приведен пример (не соответствующий POSIX ), включающий булевы выражения :
длина выражения "abcdef" "<" 5 "|" 15 - 4 ">" 8
Этот пример выводит "1". Это потому, что длина "abcdef" равна 6, что не меньше 5 (поэтому левая часть | возвращает ноль). Но 15 минус 4 равно 11 и больше 8, поэтому правая часть истинна, что делает or истинным , поэтому результатом будет 1. Статус выхода программы для этого примера равен нулю .
Для чистой арифметики часто удобнее использовать bc . Например:
эхо "3 * 4 + 14 / 2" | bc
поскольку он принимает выражение как один аргумент.
Для программирования переносимой оболочки следует избегать использования команд «index», «length», «match» и «substr»; сопоставление строк остается возможным, но для этого необходимо использовать синтаксис «string : regexp».