выражение
![]() Пример expr команда, выполняющая базовое суммирование | |
Оригинальный автор(ы) | Дик Хейт ( AT&T Bell Laboratories ) |
---|---|
Разработчик(и) | Различные с открытым исходным кодом и коммерческие разработчики разработчики |
Первоначальный выпуск | 1979 год |
Операционная система | Unix , Unix-подобные , IBM i |
Платформа | Кросс-платформенный |
Тип | Команда |
expr — это утилита командной строки в Unix и Unix-подобных операционных системах , которая оценивает выражение и выводит соответствующее значение. Впервые он появился в Unix v7 . Команда доступна для Microsoft Windows как часть UnxUtils. коллекции [1] собственных Unix Win32 портов распространенных GNU -подобных утилит. [2] Команда expr также была перенесена в операционную систему IBM i . [3]
Обзор
[ редактировать ]expr оценивает целочисленные или строковые выражения, включая регулярные выражения , соответствующие шаблону . Каждый символ (оператор, значение и т. д.) в выражении должен быть задан как отдельный параметр. Основная проблема, возникающая при написании выражений, заключается в том, чтобы не допустить воздействия вызывающей оболочки командной строки на символы, предназначенные для expr обработки .
Синтаксис
[ редактировать ]Синтаксис: выражение выражение
Доступные операторы
- для целых чисел: сложение, вычитание, умножение, деление и модуль.
- для строк: соответствие регулярному выражению; в некоторых версиях: найти набор символов в строке («индекс»), найти подстроку («substr»), длину строки («длина»)
- для любого из них: сравнение (равно, не равно, меньше и т. д.)
Пример
[ редактировать ]Ниже приведен пример (несовместимый с POSIX ) с использованием логических выражений :
expr length "abcdef" "<" 5 "|" 15 - 4 ">" 8
В этом примере выводится «1». Это связано с тем, что длина «abcdef» равна 6, что не меньше 5 (поэтому левая часть | возвращает ноль). Но 15 минус 4 равно 11 и больше 8, поэтому правая часть равна истине, что делает или истинным, поэтому результатом является 1. программы статус завершения В этом примере равен нулю.
Для чистой арифметики часто удобнее использовать bc . Например:
echo "3 * 4 + 14 / 2" | bc
поскольку он принимает выражение как единственный аргумент.
При программировании переносимой оболочки следует избегать использования команд «index», «length», «match» и «substr»; Сопоставление строк остается возможным, но оно должно использовать синтаксис «строка: регулярное выражение».
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Порт наиболее важных утилит GNU для Windows.
- ^ «Собственные порты Win32 некоторых утилит GNU» . unxutils.sourceforge.net .
- ^ ИБМ . «Программирование Qshell в IBM System i версии 7.2» (PDF) . ИБМ . Проверено 05 сентября 2020 г.
Внешние ссылки
[ редактировать ]
- Единая спецификация UNIX , версия 4 от The Open Group : оценивать аргументы как выражение – Справочник по командной строке и утилитам,
- Вызов expr в руководстве GNU coreutils