Поиск по сайту:
Всякий Бог есть мера сущего (Прокл).

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

19.04.2021
арифметических операций в 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’.

Читать  Команда Lsmod в Linux (список модулей ядра)

 

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

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

  • num1> num2: это сравнение вернет 1, если num1 больше, чем num2.
  • num1 <num2: результат будет 1, если num1 меньше num2.
  • num1 <= num2: результат будет 1, если num1 меньше или равно num2.
  • num1> = num2: результат будет 1, если num1 больше или равно num2.
  • num1 == num2: результат будет 1, если num1 равно num2.
  • num1! = num2: результат будет 1, если оба числа не равны.

 

Ниже приведены некоторые примеры операторов сравнения, используемых вместе с командой «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

 

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

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

  • stat1 && stat2: возвращает 1, если оба оператора не равны нулю.
  • stat1 || stat2: возвращает 1, если какое-либо из операторов не равно нулю.
  • ! stat: возвращает 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 больше». Мы можем применить любое условие, используя логические операторы и операторы сравнения в приведенном выше примере.

Читать  Как создать загрузочную флешку для Linux

 

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

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

  • s (x): возвращает синус x, где x в радианах
  • c (x): возвращает косинус x, где x в радианах
  • a (x): возвращает арктангенс x, результат в радианах
  • sqrt (x): возвращает квадратный корень из x. Это вызывает ошибку времени выполнения, когда x отрицательно
  • l (x): возвращает натуральный логарифм x.

Эти функции можно использовать с командой ‘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.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
«КОМСЕТ-сервис» — производитель, который специализируется на разработке систем точного времени…

Спасибо!

Теперь редакторы в курсе.