Работа с числами в Bash (Linux)

Bash поддерживает работу с целыми числами напрямую. Для работы с вещественными (дробными) числами используются утилиты bc, awk и другие.

Для целых чисел Bash предоставляет встроенные механизмы:

СинтаксисОписание
$(( выражение ))Арифметика Bash
let переменная=выражениеОперации через let
exprPOSIX-совместимая утилита

Примеры:

echo $((2 + 3))         # 5
let x=7*3
echo $x                 # 21
expr 10 / 2             # 5

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

ЗнакОписание
+сложение
-вычитание
* умножение
/деление (только целые числа)
%остаток от деления
**возведение в степень (Bash 4+)

Пример:

echo $((2 ** 4))        # 16
СинтаксисОписание
-eqравно
-neне равно
-ltменьше
-leменьше или равно
-gtбольше
-geбольше или равно

Пример:

a=5
b=3
if [ $a -gt $b ]; then
echo "$a больше $b"
fi

Bash не поддерживает дробные числа напрямую. Используйте:

Пример с bc:

echo "scale=2; 10 / 3" | bc     # 3.33

Пример с awk:

awk 'BEGIN {print 10 / 3}'      # 3.33333

Поддерживаются в bc с флагом -l:

echo "s(0.5)" | bc -l           # синус
echo "sqrt(25)" | bc -l         # корень
x=5
((x++))     # пост-инкремент
((x--))     # пост-декремент
((++x))     # префиксный инкремент
echo $x

Или с let:

let x+=1
let x-=1

Получение числа из файла/команды:

num=$(cat file.txt)
echo $((num + 1))

Проверяйте, что переменные содержат числа:

[[ "$var" =~ ^[0-9]+$ ]] && echo "ОК"

Цикл с числами:

for ((i=1; i<=5; i++)); do
echo $i
done

Генерация случайного числа:

echo $RANDOM             # от 0 до 32767
echo $(($RANDOM % 100)) # от 0 до 99

Как сложить 2 + 2 в Linux

Варианты:

expr 2 + 2  # 4
 echo $((2 + 2)) # 4
 echo "2 + 2" | bc # 4
awk 'BEGIN {print 2 + 2}'  #4
let result=2+2
echo $result  #4
Метод Поддержка дробей Подходит для скриптов Примечание
expr Да Требует пробелов между операндами
$(( )) Да Встроено в Bash
bc Да Поддержка дробей и функций
awk Да Удобен для текстовой обработки
let Да Упрощённый синтаксис, только Bash

Для целых чисел используйте:

  • $(( )) — удобно, встроено
  • let — простой способ в скриптах

Для вещественных и сложных вычислений:

  • bc -l — дроби, корни, тригонометрия
  • awk — для текстовых и табличных операций

Все методы легко встраиваются в Bash-скрипты и работают в терминале Linux.