expr

Что такое команда expr в Linux

Команда expr в Linux — это утилита, которая используется для вычисления выражений прямо в командной строке. Она позволяет производить арифметические операции, сравнения, проверки строк и работу с подстроками. Благодаря expr можно обрабатывать данные без необходимости писать скрипты на Python или Bash, что делает её удобной для автоматизации.

Синтаксис команды выглядит так:

Bash
expr выражение

Пример простого выражения:

Bash
expr 5 + 3

Результат:

Bash
8

Эта команда часто используется в bash-скриптах для вычислений или проверки значений переменных.

Основные параметры и операторы команды expr

Хотя команда expr в Linux сама по себе не имеет множества флагов, она поддерживает большое количество операторов для разных типов вычислений. Рассмотрим ключевые категории.

Арифметические операции

Команда expr в Linux может выполнять стандартные арифметические действия.

Примеры:

Bash
expr 10 + 2
expr 15 - 3
expr 4 \* 5
expr 20 / 4
expr 17 % 3

Обратите внимание, что при использовании * символ нужно экранировать обратным слэшем (\), иначе оболочка воспримет его как шаблон для файлов.

Результаты:

Bash
12  
12  
20  
5  
2
Совет: если выражение содержит пробелы, всегда оборачивайте его в кавычки, чтобы избежать ошибок интерпретации.

Сравнение значений

Команда expr в Linux позволяет сравнивать числа и строки. Это полезно для проверки условий в bash-скриптах.

Примеры:

Bash
expr 5 \> 3
expr 5 \< 3
expr 10 = 10
expr "text" = "text"
expr "abc" \!= "xyz"

Результаты:

Bash
1  # истина  
0  # ложь  
1  
1  
1

Здесь 1 означает «истинно», а 0 — «ложно».

Работа со строками

Кроме арифметики, команда expr в Linux позволяет выполнять операции со строками.

1. Подсчет длины строки

Bash
expr length "Linux"

Результат:

Bash
5

2. Извлечение подстроки

Bash
expr substr "expression" 2 5

Результат:

Bash
xpres

Здесь 2 — позиция начала, 5 — длина подстроки.

3. Нахождение позиции символа

Bash
expr index "terminal" "m"

Результат:

Bash
5

Команда вернет позицию первого вхождения символа.

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

Часто команда expr в Linux применяется совместно с переменными оболочки.

Пример:

Bash
a=7  
b=3  
result=$(expr $a + $b)  
echo $result

Результат:

Bash
10

Также можно использовать её для сравнения:

Bash
[ $(expr $a \> $b) -eq 1 ] && echo "a больше b"

Результат:

Bash
a больше b

Применение команды expr в скриптах

Команда expr в Linux особенно полезна при написании shell-скриптов, где требуется минимальный набор инструментов без внешних зависимостей.

Пример 1: подсчет числа файлов в каталоге

Bash
count=$(expr $(ls | wc -l))
echo "Количество файлов: $count"

Этот способ позволяет быстро определить количество файлов без сложных конструкций.

Пример 2: проверка возраста переменной

Bash
age=25  
expr $age \> 18 > /dev/null && echo "Доступ разрешен" || echo "Доступ запрещен"

Результат:

Bash
Доступ разрешен

Ошибки и подводные камни

Хотя команда expr в Linux проста в использовании, она имеет ряд особенностей:

  • При отсутствии пробелов между операторами и операндами выражение не будет обработано. expr 5+3 # Ошибка expr 5 + 3 # Верно
  • Операторы нужно экранировать: *, <, >, ! — иначе оболочка примет их за специальные символы.
  • При делении на ноль команда вернет ошибку: expr 10 / 0 Ошибка: expr: division by zero

Совет: всегда проверяйте данные перед вычислениями с помощью условий if или test, чтобы избежать подобных сбоев.

Альтернативы и сочетание с другими инструментами

Команда expr в Linux сегодня частично заменена современными средствами bash, такими как $(( )).
Например:

Bash
echo $((5 + 3))

Результат будет тот же — 8, но синтаксис проще. Однако expr остаётся полезной, когда требуется POSIX-совместимость или выполнение команд в минимальных окружениях.

Также её можно сочетать с grep, awk или sed для более сложной обработки данных.

Пример:

Bash
expr $(grep -c "error" logfile.txt) \> 0 && echo "Ошибки найдены"

Когда стоит использовать команду expr в Linux

  • В минимальных системах без bash-расширений.
  • В POSIX-совместимых скриптах.
  • При необходимости быстро выполнить арифметику или обработку строк.

Команда expr в Linux остаётся частью базового набора утилит Unix-подобных систем, и знание её принципов важно для DevOps, системных администраторов и инженеров по автоматизации.