expr
Что такое команда expr в Linux
Команда expr в Linux — это утилита, которая используется для вычисления выражений прямо в командной строке. Она позволяет производить арифметические операции, сравнения, проверки строк и работу с подстроками. Благодаря expr можно обрабатывать данные без необходимости писать скрипты на Python или Bash, что делает её удобной для автоматизации.
Синтаксис команды выглядит так:
expr выражение
Пример простого выражения:
expr 5 + 3
Результат:
8
Эта команда часто используется в bash-скриптах для вычислений или проверки значений переменных.
Основные параметры и операторы команды expr
Хотя команда expr в Linux сама по себе не имеет множества флагов, она поддерживает большое количество операторов для разных типов вычислений. Рассмотрим ключевые категории.
Арифметические операции
Команда expr в Linux может выполнять стандартные арифметические действия.
Примеры:
expr 10 + 2
expr 15 - 3
expr 4 \* 5
expr 20 / 4
expr 17 % 3
Обратите внимание, что при использовании * символ нужно экранировать обратным слэшем (\), иначе оболочка воспримет его как шаблон для файлов.
Результаты:
12
12
20
5
2
Сравнение значений
Команда expr в Linux позволяет сравнивать числа и строки. Это полезно для проверки условий в bash-скриптах.
Примеры:
expr 5 \> 3
expr 5 \< 3
expr 10 = 10
expr "text" = "text"
expr "abc" \!= "xyz"
Результаты:
1 # истина
0 # ложь
1
1
1
Здесь 1 означает «истинно», а 0 — «ложно».
Работа со строками
Кроме арифметики, команда expr в Linux позволяет выполнять операции со строками.
1. Подсчет длины строки
expr length "Linux"
Результат:
5
2. Извлечение подстроки
expr substr "expression" 2 5
Результат:
xpres
Здесь 2 — позиция начала, 5 — длина подстроки.
3. Нахождение позиции символа
expr index "terminal" "m"
Результат:
5
Команда вернет позицию первого вхождения символа.
Использование с переменными
Часто команда expr в Linux применяется совместно с переменными оболочки.
Пример:
a=7
b=3
result=$(expr $a + $b)
echo $result
Результат:
10
Также можно использовать её для сравнения:
[ $(expr $a \> $b) -eq 1 ] && echo "a больше b"
Результат:
a больше b
Применение команды expr в скриптах
Команда expr в Linux особенно полезна при написании shell-скриптов, где требуется минимальный набор инструментов без внешних зависимостей.
Пример 1: подсчет числа файлов в каталоге
count=$(expr $(ls | wc -l))
echo "Количество файлов: $count"
Этот способ позволяет быстро определить количество файлов без сложных конструкций.
Пример 2: проверка возраста переменной
age=25
expr $age \> 18 > /dev/null && echo "Доступ разрешен" || echo "Доступ запрещен"
Результат:
Доступ разрешен
Ошибки и подводные камни
Хотя команда expr в Linux проста в использовании, она имеет ряд особенностей:
- При отсутствии пробелов между операторами и операндами выражение не будет обработано.
expr 5+3 # Ошибка expr 5 + 3 # Верно - Операторы нужно экранировать:
*,<,>,!— иначе оболочка примет их за специальные символы. - При делении на ноль команда вернет ошибку:
expr 10 / 0Ошибка:expr: division by zero
Совет: всегда проверяйте данные перед вычислениями с помощью условий if или test, чтобы избежать подобных сбоев.
Альтернативы и сочетание с другими инструментами
Команда expr в Linux сегодня частично заменена современными средствами bash, такими как $(( )).
Например:
echo $((5 + 3))
Результат будет тот же — 8, но синтаксис проще. Однако expr остаётся полезной, когда требуется POSIX-совместимость или выполнение команд в минимальных окружениях.
Также её можно сочетать с grep, awk или sed для более сложной обработки данных.
Пример:
expr $(grep -c "error" logfile.txt) \> 0 && echo "Ошибки найдены"
Когда стоит использовать команду expr в Linux
- В минимальных системах без bash-расширений.
- В POSIX-совместимых скриптах.
- При необходимости быстро выполнить арифметику или обработку строк.
Команда expr в Linux остаётся частью базового набора утилит Unix-подобных систем, и знание её принципов важно для DevOps, системных администраторов и инженеров по автоматизации.