- Глава 8. Операции и смежные темы
- Математика в BASH с помощью bc
- Использование bc для базовых операций:
- Округление результата
- Если же у Вас есть файл с набором математических операций
- Использование результата последней операции:
- Тригонометрические функции:
- Создание переменных на основе результатов вычислений:
- You May Also Enjoy
- Jenkins auth over AWS Cognito
- Copy the Jenkins job
- Установка nginx из исходников
- Уникальные IP адреса в access.log Apache
- Арифметические операции в Bash скрипте
- Введение
- Двойные скобки
- Сложение
- Целочисленное деление
- Остаток от деления
- Float Сложение
- bc: float умножение
- Арифметические операции в BASH
- Выполнение основных арифметических операций
- Выполнение сложных арифметических операций
- Операторы сравнения
- Логические операторы
- Условные утверждения
- Математические функции
- Заключение
Глава 8. Операции и смежные темы
присваивание
Инициализация переменной или изменение ее значения
Универсальный оператор присваивания, пригоден как для сравнения целых чисел, так и для сравнения строк.
Оператор | Операция |
---|---|
+, -, \*, / | Сложение, вычитание, умножение, деление |
var++ | Увеличение переменной на 1 |
var— | Уменьшение переменной на 1 |
% | Модуль: возвращает остаток от деления |
expr похож на let за исключением того, что вместо сохранения результата в переменную expr по умолчанию печатает ответ.
Но никто не запрещает сохранять результат expr в переменные с помощью command substitution: x = $(expr 2 + 2)
В отличие от let не нужно заключать выражения с пробелами в кавычки
Нужно ставить пробелы вокруг операторов.
expr item1 operator item2
Рассмотрим простой пример:
#!/bin/bash # Простая арифметика с использованием expr expr 5 + 4 expr «5 + 4» expr 5+4 expr 5 \* $1 expr 11 % 2 A= $( expr 10 — 3 ) echo $A # 7
Разберём этот пример пошагово:
Строка 4 — Это базовый синтаксис. Обратите внимание на пробелы и на отсутствие кавычек.
Строка 6 — Если заключить выражение в кавычки его в таком виде и выведет в терминал.
Строка 8 — Если не поставить пробелы выражение будет выведено в терминал без вычисления.
Строка 10 — Некоторые символы нужно экранировать.
Строка 12 — Это деление по модулю. Результатом будет остаток от целочисленного деления двух чисел.
Строка 14 — Пример выполнения command substitution чтобы сохранить результат в переменную a.
Двойные скобки
Результат выполнения команды можно легко сохранить в переменную.
VAR = $(какая-то команда)
На основе этого механизма можно выполнять арифметические действия. Достаточно вместо одной пары скобок использовать две.
Рассмотрим примеры в скрипте
#!/bin/bash # Простая арифметика с двойными скобками A= $(( 4 + 5 )) echo $A # 9 A= $((3+5)) echo $A # 8 B= $(( A + 3 )) echo $B # 11 B= $(( $A + 4 )) echo $B # 12 (( B++ )) echo $B # 13 (( B += 3 )) echo $B # 16 A= $(( 4 * 5 )) echo $A # 20
Разберём этот скрипт:
Строка 4 — Базовый синтаксис. Можно ставить пробелы без использования кавычек.
Строка 7 — Работает и без пробелов.
Строка 10 — Можно использовать переменные без $ перед ними.
Строка 13 — А можно и с $
Строка 16 — Увеличение переменной на 1. Символ $ не нужен.
Строка 19 — Увеличение переменной на 3. Это краткая форма записи b = b + 3.
Строка 19 — В отличие от других способов символ * не нужно экранировать.
Двойные скобки дают довольно много свободы в форматировании кода.
Они доступны в Bash по умолчанию и их эффективность немного выше. Хотя заметить разницу на современных компьютерах будет непросто.
Сложение
Сложение в bash можно выполнить следущими способами
#!/bin/bash # Bash + # let A=2 B=3 let C=$A+ $B echo $C
#!/bin/bash # Bash + # expr and (( )) D=4 E=5 F=$( expr $D + $E ) G=$(( $D + $D )) echo $F echo $G
Целочисленное деление
В bash по умолчанию реализовано именно целочисленное деление
Рассмотрим, что будет если попытаться поделить числа с помощью let
#!/bin/bash # Целочисленное деление A=100 B=3 let «C = $A / $B » echo «C: $C «
Дробная часть потерялась
Если вас это не устраивает — используйте bc
Остаток от деления
Остаток от деления можно получить с помощью % следующим оригинальным образом
Float Сложение
Сложение чисел с плавающей точкой можно выполнить с помощью bc
#!/bin/bash # Bash + # bc X=1.5 Y=3.5 Z= $(bc «scale=3; $X + $Y «) echo «1.5 + 3.5 = » $Z
В bash нет родной поддержки деления чисел с плавающей точкой. Но есть утилиты, которые умеют это делать.
Одна из них это bc
Что будет если попытаться поделить числа с помощью let
#!/bin/bash # Деление с let A=100 B=3 let «C = $A / $B » echo «C: $C «
Дробная часть потерялась
Чтобы этого не произошло используйте bc
# Деление с bc D= $(bc «scale=3; $A / $B «) echo «D: $D «
bc: float умножение
Также с помощью bc удобно умножать числа с плавающей запятой
#!/bin/bash # Умножение с bc A=2.5 B=5.6 С= $(bc «scale=3; $A * $B » ) echo «С: $C «
Источник
Арифметические операции в BASH
Главное меню » Linux » Арифметические операции в BASH
Выполнение основных арифметических операций
Простые арифметические операции, такие как сложение, вычитание, деление и умножение, можно выполнять с помощью команды «bc». Синтаксис для применения простых бинарных операторов в bash с помощью команды ‘bc’ следующий.
В этом разделе мы будем использовать команду «bc» для выполнения простых арифметических операций.
В приведенном выше примере при выполнении деления мы получили результат без десятичных знаков. Чтобы получить результат с точностью до «n» десятичных знаков, мы должны установить значение шкалы на «n», как показано в следующем примере.
В качестве альтернативы мы можем использовать флаг ‘-l’ и команду ‘bc’, чтобы получить десятичный вывод.
Команду ‘bc’ также можно использовать для выполнения модульного деления и вычисления степени числа в сценариях bash.
Выполнение сложных арифметических операций
До сих пор мы использовали команду ‘bc’ для выполнения некоторых основных арифметических операций, таких как сложение, вычитание, умножение и т. д., Теперь; в этом разделе мы будем использовать команду «bc» для выполнения некоторых сложных арифметических операций. Мы обсудим, как мы можем использовать операторы сравнения, логические или логические операторы, сложные математические функции и условные операторы в bash с помощью команды ‘bc’.
Операторы сравнения
Операторы сравнения берут два числа, сравнивают их и затем возвращают 1 или 0 в зависимости от сравнения. Если сравнение верно, то результат TRUE(1) ; в противном случае – FALSE(0). Ниже приведены несколько примеров операторов сравнения.
- num1> num2: это сравнение вернет 1, если num1 больше, чем num2.
- num1 = num2: результат будет 1, если num1 больше или равно num2.
- num1 == num2: результат будет 1, если num1 равно num2.
- num1! = num2: результат будет 1, если оба числа не равны.
Ниже приведены некоторые примеры операторов сравнения, используемых вместе с командой «bc».
Логические операторы
Булевы или логические операторы используются в условных операторах для выполнения некоторых логических решений. Ниже приведены три основных логических оператора.
- stat1 && stat2: возвращает 1, если оба оператора не равны нулю.
- stat1 || stat2: возвращает 1, если какое-либо из операторов не равно нулю.
- ! stat: возвращает 1, если оператор не равен нулю, и наоборот.
В следующих примерах показано, как логические операторы используются с командой «bc».
Условные утверждения
Условные операторы используются для выполнения определенных команд в зависимости от применяемого условия. Применяемое условие в условном операторе включает логические операторы и операторы сравнения. Ниже приведен пример условных операторов с командой «bc».
В приведенном выше примере инструкция проверяет, больше ли a чем b или нет. Если a больше, чем b, будет напечатано «a больше»; в противном случае будет напечатано «b больше». Мы можем применить любое условие, используя логические операторы и операторы сравнения в приведенном выше примере.
Математические функции
Команда ‘bc’ также предоставляет некоторые встроенные математические функции, которые мы можем использовать, не определяя их. Ниже приведены некоторые важные функции, используемые с командой bc в bash.
- s (x): возвращает синус x, где x в радианах
- c (x): возвращает косинус x, где x в радианах
- a (x): возвращает арктангенс x, результат в радианах
- sqrt (x): возвращает квадратный корень из x. Это вызывает ошибку времени выполнения, когда x отрицательно
- l (x): возвращает натуральный логарифм x.
Эти функции можно использовать с командой ‘bc’, как показано в следующих примерах.
Квадратный корень из числа можно вычислить в bash с помощью команды ‘bc’, как показано на следующем рисунке.
При попытке вычислить квадратный корень из отрицательного числа оболочка выдаст ошибку времени выполнения.
Натуральный логарифм числа можно вычислить в bash с помощью команды ‘bc’ следующим образом.
Заключение
При написании сценариев автоматизации на bash иногда нам нужны сложные математические функции и логические операторы для выполнения команд. Команда ‘bc’ предоставляет множество сложных математических функций и операторов для выполнения арифметических вычислений высокого уровня. В этой статье обсуждалось использование команды ‘bc’ для выполнения расширенных арифметических операций в bash.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник