Математика в BASH с помощью bc


bc - это язык, который поддерживает числа произвольной точности с интерактивным исполнения отчетности.
Безусловно, bc - один из аутсайдеров, когда дело доходит до расчетов по командной строке.

Главным достоинством bc является обработка чисел с запятой (float). В среде bash можно проводить обычные операции (сложение, вычитание, деление и умножение) с целыми числами, но без bc не обойтись, когда дело доходит до десятичных дробей.

Дальше приводится несколько примеров использования bc:

Использование bc для базовых операций:

bc <<< 3-2
bc <<< 5*2
bc <<< 9/3

как всегда, можно использовать echo + |:

echo "3*2" |bc
echo "3-2" |bc
echo "3*2" |bc
echo "3/2" |bc

bc, как положено, соблюдает приоритетность математических операций. Проверьте:

echo "2 + 2 * 2" |bc

Округление результата

В случае выполнения операции деления из примера bc вернет 1. Для того что бы показать цифры после запятой нужно указать сколько их нужно с помощью scale (по умолчанию = 0):

echo "scale=1;3/2" |bc

Если же у Вас есть файл с набором математических операций

, воспользуйтесь слудющей конструкцией:

bc < FileName

Использование результата последней операции:

echo "2 + 2;last * 2" |bc

Вместо last можно использовать точку:

echo "2 + 2;. * 2" |bc

Получение квадратного корня и возведение в степень
sqrt вернет квадратный корень из числа. Если результат является десятичной дробью - используйте scale для отображения знаков после запятой.

echo "sqrt(16)" | bc

Довольно странно, что у библиотеки, написанной на C не предусмотрено использование sqr, но все же его нету.

Пример возведения в степень:

echo "4^2" | bc

Тригонометри́ческие функции:

Сомневаюсь, что кто-то будет в скриптах использовать значение косинуса или натурального логарифма числа, но все же:

  • s (x) Синус x. x задается в радианах.
  • c (x) Косинус x. x задается в радианах.
  • l (x) Натуральный логарифм x

Создание переменных на основе результатов вычислений:

var1=$(echo "sqrt(16)" | bc)

var2=$(bc <<< "2 + 2 * 2")

echo $var1 + $var2 |bc

В этой статье bc используется для определения места, которое занимают базы даных mysql.

Статьи на английском языке:
mylinuxbook.com
basicallytech.com

Share Button
(Visited 4 598 times, 1 visits today)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.