ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

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

арифметических операций в BASH

Базовый калькулятор, также известный как «bc», представляет собой служебную программу командной строки Linux, используемую для выполнения расширенной арифметики и алгебры в сценариях bash. Он предоставляет множество различных математических функций, таких как синус, косинус, тангенс, натуральный логарифм в bash. Bash не может выполнять сложные арифметические операции, такие как сравнение чисел с плавающей запятой; вот где пригодится bc. Команде ‘bc’ предшествовала утилита UNIX ‘dc’ (Настольный калькулятор). В этой статье мы будем использовать команду «bc» для выполнения сложных арифметических операций.

 

Выполнение основных арифметических операций

Простые арифметические операции, такие как сложение, вычитание, деление и умножение, можно выполнять с помощью команды «bc». Синтаксис для применения простых бинарных операторов в bash с помощью команды ‘bc’ следующий.

ubuntu@andreyex.ru:~$ echo “<num1> <operator> <num2>” | bc

 

В этом разделе мы будем использовать команду «bc» для выполнения простых арифметических операций.

ubuntu@andreyex.ru:~$ num1=2.35322 5

ubuntu@andreyex.ru:~$ num2=1.223353

ubuntu@andreyex.ru:~$ echo “$num1+$num2” | bc

3.576578

ubuntu@andreyex.ru:~$ echo “$num1-$num2” | bc

1.129872

ubuntu@andreyex.ru:~$ echo “$num1*$num2” | bc

2.878824

ubuntu@andreyex.ru:~$ echo “$num1/$num2” | bc

1

 

В приведенном выше примере при выполнении деления мы получили результат без десятичных знаков. Чтобы получить результат с точностью до «n» десятичных знаков, мы должны установить значение шкалы на «n», как показано в следующем примере.

ubuntu@andreyex.ru:~$ echo “scale=10; $num1/$num2” | bc

1.9235862420

 

В качестве альтернативы мы можем использовать флаг ‘-l’ и команду ‘bc’, чтобы получить десятичный вывод.

ubuntu@andreyex.ru:~$ echo “$num1/$num2” | bc -l

1.92358624207403750184

 

Команду ‘bc’ также можно использовать для выполнения модульного деления и вычисления степени числа в сценариях bash.

ubuntu@andreyex.ru:~$ echo “10%4” | bc

2

ubuntu@andreyex.ru:~$ echo “10^2” | bc

100

 

Выполнение сложных арифметических операций

До сих пор мы использовали команду ‘bc’ для выполнения некоторых основных арифметических операций, таких как сложение, вычитание, умножение и т. д., Теперь; в этом разделе мы будем использовать команду «bc» для выполнения некоторых сложных арифметических операций. Мы обсудим, как мы можем использовать операторы сравнения, логические или логические операторы, сложные математические функции и условные операторы в bash с помощью команды ‘bc’.

 

Операторы сравнения

Операторы сравнения берут два числа, сравнивают их и затем возвращают 1 или 0 в зависимости от сравнения. Если сравнение верно, то результат TRUE(1) ; в противном случае — FALSE(0). Ниже приведены несколько примеров операторов сравнения.

 

Ниже приведены некоторые примеры операторов сравнения, используемых вместе с командой «bc».

ubuntu@andreyex.ru:~$ echo “5==5” | bc

1

ubuntu@andreyex.ru:~$ echo “4!=4” | bc

0

ubuntu@andreyex.ru:~$ echo “2>5” | bc

0

ubuntu@andreyex.ru:~$ echo “4<=4” | bc

1

 

Логические операторы

Булевы или логические операторы используются в условных операторах для выполнения некоторых логических решений. Ниже приведены три основных логических оператора.

В следующих примерах показано, как логические операторы используются с командой «bc».

ubuntu@andreyex.ru:~$ echo “-5 && 0” | bc

0

ubuntu@andreyex.ru:~$ echo “-1 || 0” | bc

1

ubuntu@andreyex.ru:~$ echo “! 0” | bc

1

 

Условные утверждения

Условные операторы используются для выполнения определенных команд в зависимости от применяемого условия. Применяемое условие в условном операторе включает логические операторы и операторы сравнения. Ниже приведен пример условных операторов с командой «bc».

ubuntu@andreyex.ru:~$ a=15

ubuntu@andreyex.ru:~$ b=20

ubuntu@andreyex.ru:~$ echo ‘ if(a>b) print “a больше” else print “b больше” ‘ | bc -l

b is greater

 

В приведенном выше примере инструкция проверяет, больше ли a чем b или нет. Если a больше, чем b, будет напечатано «a больше»; в противном случае будет напечатано «b больше». Мы можем применить любое условие, используя логические операторы и операторы сравнения в приведенном выше примере.

 

Математические функции

Команда ‘bc’ также предоставляет некоторые встроенные математические функции, которые мы можем использовать, не определяя их. Ниже приведены некоторые важные функции, используемые с командой bc в bash.

Эти функции можно использовать с командой ‘bc’, как показано в следующих примерах.

ubuntu@andreyex.ru:~$ pi=3.1415

ubuntu@andreyex.ru:~$ echo “s($pi/2)” | bc -l

1

ubuntu@andreyex.ru:~$ echo “c($pi/2)” | bc -l

0

ubuntu@andreyex.ru:~$ echo “a(1)” | bc -l

0.7854

 

Квадратный корень из числа можно вычислить в bash с помощью команды ‘bc’, как показано на следующем рисунке.

ubuntu@andreyex.ru:~$ echo “sqrt(4)” | bc -l

2

 

При попытке вычислить квадратный корень из отрицательного числа оболочка выдаст ошибку времени выполнения.

ubuntu@andreyex.ru:~$ echo “sqrt(-2)” | bc -l

Runtime error (func=(main), adr=4): Square root of a negative number

 

Натуральный логарифм числа можно вычислить в bash с помощью команды ‘bc’ следующим образом.

ubuntu@andreyex.ru:~$ echo “l(2)” | bc -l

.69314718055994530941

 

Заключение

При написании сценариев автоматизации на bash иногда нам нужны сложные математические функции и логические операторы для выполнения команд. Команда ‘bc’ предоставляет множество сложных математических функций и операторов для выполнения арифметических вычислений высокого уровня. В этой статье обсуждалось использование команды ‘bc’ для выполнения расширенных арифметических операций в bash.

Exit mobile version