Linux bash сложение чисел

Глава 8. Операции и смежные темы

присваивание

Инициализация переменной или изменение ее значения

Универсальный оператор присваивания, пригоден как для сравнения целых чисел, так и для сравнения строк.

Пусть вас не смущает, что оператор присваивания ( «=» ), по своему внешнему виду, совпадает с оператором сравнения (=).

арифметические операторы

возведение в степень

модуль (деление по модулю), возвращает остаток от деления

Этот оператор может применяться в алгоритмах генерации псевдослучайных чисел в заданном диапазоне (см. Пример 9-23 и Пример 9-25), для форматирования вывода на экран (см. Пример 25-10 и Пример A-7), и даже для генерации простых чисел (см. Пример A-18). На удивление часто операцию деления по модулю можно встретить в различных численных алгоритмах.

Пример 8-1. Наибольший общий делитель

«плюс-равно» (увеличивает значение переменной на заданное число)

let «var += 5» значение переменной var будет увеличено на 5.

«минус-равно» (уменьшение значения переменной на заданное число)

«умножить-равно» (умножить значение переменной на заданное число, результат записать в переменную)

let «var *= 4» значение переменной var будет увеличено в 4 раза.

«слэш-равно» (уменьшение значения переменной в заданное число раз)

«процент-равно» (найти остаток от деления значения переменной на заданное число, результат записать в переменную)

Арифметические операторы очень часто используются совместно с командами expr и let.

Пример 8-2. Арифметические операции

Целые числа в Bash фактически являются знаковыми длинными целыми (32-бит), с диапазоном изменений от -2147483648 до 2147483647. Если в результате какой либо операции эти пределы будут превышены, то результат получится ошибочным.

Bash ничего не знает о существовании чисел с плавающей запятой. Такие числа, из-за наличия символа десятичной точки, он воспринимает как строки.

Для работы с числами с плавающей запятой в сценариях можно использовать утилиту-калькулятор bc.

битовые операции. Битовые операции очень редко используются в сценариях командного интерпретатора. Их главное назначение, на мой взгляд, установка и проверка некоторых значений, читаемых из портов ввода-вывода и сокетов. «Битовые операции» гораздо более уместны в компилирующих языках программирования, таких как C и C++.

битовые операции

сдвигает на 1 бит влево (умножение на 2)

let «var var сдвигается влево на 2 бита (умножается на 4)

сдвиг вправо на 1 бит (деление на 2)

«сдвиг-вправо-равно» (имеет смысл обратный )

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Updated: January 27, 2015

You May Also Enjoy

Jenkins auth over AWS Cognito

Jenkins auth over AWS Cognito

Copy the Jenkins job

Copy the Jenkins job

Установка nginx из исходников

В разных случаях приходится компилировать ПО имея его исходники. Опять же хочу разводить демагогию на эту тему. Хочу рассказать как собрать nginx последней в.

Уникальные IP адреса в access.log Apache

Получить список уникальных IP адресов в лог файле вэбсервера Apache можно с помощью:

Источник

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

Введение

В bash существует множество способов выполнения арифметических операций. В этой статье вы найдёте подробный обзор использования let, expr, (()) и bc

let это встроенная функция bash, которая позволяет производить базовые арифметические операции.

Используется следующим образом:

Рассмотрим примеры в скрипте let_example.sh

#!/bin/bash # Простая арифметика с let let A=5+4 echo $A # 9 let «A = 5 + 4» echo $A # 9 let A++ echo $A # 10 let «A = 4 * 5» echo $A # 20 let «A = $1 + 30» echo $A # 30 + первый аргумент из командной строки

Разберём команды по очереди:

Строка 4 — Это простейшая форма записи без кавычек.

Помните, что если вычисление идёт без кавычек — ставить пробелы нельзя

Строка 7 — Если поставить кавычки — можно пользоваться пробелом для лучшей читаемости.\

Строка 10 — Увеличиваем значение на 1. Это аналог «a = a + 1».

Строка 16 — В выражение можно включить и другие переменные.

Таблица основных операторов

Оператор Операция
+, -, \*, / Сложение, вычитание, умножение, деление
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.

Источник

Читайте также:  Портал технической поддержки astra linux
Оцените статью