Поиск по сайту:
В симбиозе человек-машина приспосабливаться должен человек; машины этого не могут. (Алан.Дж.Перлис)

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

Читать  Как редактировать файл Hosts в 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 больше». Мы можем применить любое условие, используя логические операторы и операторы сравнения в приведенном выше примере.

Читать  Как настроить виртуальные хосты Apache в Ubuntu 20.04

 

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

Команда ‘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 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

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


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

Спасибо!

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