Сложение чисел в linux

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

При написании сценария на bash, иногда может понадобиться быстро подсчитать числа. Например, преобразовать единицы данных, округлить делимое значение до ближайшего целого числа, увеличить счетчик в простых циклах и т. д. Каждый язык программирования имеет встроенную поддержку основных арифметических операций над распространенными типами данных. Однако, поскольку bash не является языком программирования общего назначения, а скорее интерпретатором командной строки, он поставляется с ограниченной поддержкой арифметических операций.

Ограничение Bash для арифметических операций

Переменные в bash не являются строго типизированными. По умолчанию все переменные bash являются символьными строками, если они не указаны с помощью declare. Для поддержки арифметических операций над такими строковыми переменными, bash рассматривает переменные как целые числа, если это определено контекстом выполнения. Операторы арифметики/сравнения к переменным, содержащим только цифры, bash автоматически рассматривает переменные как целые числа. Такое автоматическое преобразование строк в целые числа позволяет bash оценивать целочисленную арифметику. Однако bash не поддерживает вычисления с плавающей запятой нативно, и придется полагаться на внешние инструменты, такие как GNU bc, для операций с плавающей запятой.

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

Существует множество способов выполнения арифметических операций в bash, для переносимости сценария рекомендуется использовать встроенный механизм bash, а не полагаться на внешние команды. Если вы необходимо выполнить целочисленную арифметику, это окружить арифметическое выражение двойными круглыми скобками, как показано ниже. Формат арифметического выражения, заключенного в круглые скобки, основан на языке программирования C.

# Целочисленные переменные могут храниться с кавычками или без них a=100 b="3" (( sum = a + b )) # сложение (( sub = a - b )) # вычитание (( mul = a * b )) # умножение (( div = a / b )) # деление (( mod = a % b )) # модуль (остаток) (( exp = a ** b )) # экпонента echo "sum: $sum, sub: $sub, mul: $mul, div: $div, mod: $mod, exp: $exp"

Результат выполнения операций

sum: 103, sub: 97, mul: 300, div: 33, mod: 1, exp: 1000000

Поскольку bash не поддерживает тип данных с плавающей точкой, деление двух переменных всегда будет давать целочисленный результат путем усечения до нуля.

При выполнение арифметических операций, Bash позволяет увеличивать или уменьшать целочисленные переменные.

a=100 (( a++ )) echo "a = $a" (( a-= 10 )) echo "a = $a"

При использовании чисел с плавающей запятой, bash вернет ошибку «syntax error: invalid arithmetic operator».

Читайте также:  Gnu rpm in linux

Присваивание результата арифметической операции переменной

Для присвоение значения переменной используется следующая конструкция

a=100 b="3" sum=$(( a + b )) sub=$(( a - b ))

Использование команды let

Встроенная команда let позволяет вычислять «вложенное» арифметическое выражение.

a=100 b="3" let sum=a+b # перед и после присваивания не должно быть пробела let sub=a-b let mod=a%b let mod=a%b

Также возможно выполнять несколько арифметических операций в одном операторе let.

let 'tmp=a' 'a=b+1' 'b=tmp+1' let 'tmp=a, a=b+1, b=tmp+1'

Использование команды expr

В отличие от let, которая является встроенной командой bash, expr — это внешняя утилита командной строки. Поскольку она является частью GNU Coreutils, использование expr в сценарии не влияет на переносимость сценария.

a=100 b="3" # перед и после операторов должны быть пробелы sum=`expr $a + $b` sub=`expr $a - $b` mul=`expr $a \* $b` div=`expr $a / $b` mod=`expr $a % $b`

Арифметические операции, поддерживаемые expr, — это сложение (+), вычитание (-), умножение (*), деление (/) и модуляция (%). Оператор умножения должен быть экранирован символом ‘\’, так как ‘*’ имеет встроенное значение всех файлов в текущем каталоге.

Использование команды bc (для вычисления с плавающей запятой)

Bash не поддерживает вычисления с плавающей запятой. В случае, если сценарий bash требует вычислений с плавающей заятой, один из способов обойти ограничение bash является использование внешний инструмент. Одним из таких инструментов является GNU bc.

Чтобы передать bc числа с плавающей запятой, необходимо использовать echo.

a=12.5 b=5.8 # перед и после оператора должны быть пробелы sum=`echo "$a + $b" | bc` mul=`echo "$a * $b" | bc` div=`echo "scale=2; $a / $b"| bc` echo "sum: $sum, mul: $mul, div: $div"

В bc можно настроить точность чисел с плавающей запятой, изменив переменную scale. Так, например, результат следующего деления с плавающей точкой будет включать две десятичные цифры после запятой.

Результат работы сценарий

Источник

Базовая математика в Bash

Linux bash, также известный как оболочка или просто командная строка, позволяет выполнять как базовые, так и сложные арифметические и булевы операции без необходимости запускать приложение калькулятора. Такие команды, как expr, jot, bc and, factor и т.д., помогут вам найти оптимальные математические решения сложных задач.

linux

Команда expr

Команда expr или команда выражения в Linux является наиболее часто используемой командой, которая применяется для выполнения математических вычислений. Вы можете использовать эту команду для выполнения таких функций, как сложение, вычитание, умножение, деление, увеличение значения и даже сравнение двух значений. В этом разделе мы опишем синтаксис для выполнения вышеперечисленных вычислений, а также расскажем, как можно использовать команду expr для выполнения продуктивных математических вычислений в командной строке Ubuntu.

Читайте также:  Cryptopro csp plugin linux

Сложение

Вы можете сложить два или более чисел с помощью команды expr следующим образом:

Вычитание

Вы можете выполнить вычитание двух или более чисел с помощью команды expr следующим образом:

Умножение

Вы можете выполнить умножение двух или более чисел с помощью команды expr следующим образом:

Обратите внимание, что ниже приведен неправильный синтаксис для умножения чисел в командной строке Linux, так как командная строка использует простые звездочки в качестве ссылки на все файлы в текущем каталоге.

Деление

Вы можете разделить одно число на другое с помощью команды expr следующим образом:

Инкремент переменной

Вы можете увеличить переменную в Linux, сначала определив ее следующим образом:

А затем, используя следующее выражение с помощью команды expr, выполнить операцию инкремента:

count_variable=`expr $count_variable + 1`.

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

Сравнение

С помощью команды expr вы также можете проверить, больше ли число другого числа или нет.

Значение результата 1 означает, что первое число больше второго. В то время как значение 0 указывает на то, что первое число не больше второго.

С помощью команды expr вы также можете узнать, равны или нет два числа, используя следующий синтаксис:

Значение результата 1 означает, что первое число равно второму. В то время как значение результата 0 указывает на то, что эти два числа не равны.

В приведенных выше примерах мы невооруженным глазом видим, что два сравниваемых числа равны или нет. Чем же полезна эта операция?

Допустим, во время работы программы мы хотим узнать, равно ли вычисленное среднее значение нескольких чисел 10 или нет. Здесь мы можем воспользоваться командой expr, чтобы сравнить результат переменной «average» с 10 и выполнить дальнейшие операции на основе этого результата.

average=10 expr $average = 10

Продуктивное использование команды expr

Приведем пример, в котором команда expr может быть действительно продуктивной. В этом примере мы будем использовать команду expr для вычисления количества сладостей, которые получит ребенок, когда есть 10 детей и 122 сладости. Программа также вычислит количество оставшихся сладостей после того, как все дети получат равное количество сладостей.

children=10 sweets =122 PerChildShare=`expr $sweets / $children` RemainingSweets=`expr $sweets - $children \* $PerChildShare` echo $PerChildShare echo $RemainingSweets

Вывод отлично показывает, что справедливая доля каждого ребенка составляет 12, а в банке остается 2.

Команда jot

Команда jot в Linux помогает создать список чисел на основе значений, которые вы указываете в качестве начального числа и количества значений, которые вы хотите просмотреть после него. В этом разделе мы опишем синтаксис для выполнения вычислений через jot, а также расскажем, как вы можете использовать команду jot для выполнения продуктивных математических вычислений в командной строке Ubuntu.

Читайте также:  Kali linux install commands

Для того чтобы использовать команду jot в Ubuntu, вам сначала потребуется установить Athena-jot.

Введите следующую команду от имени sudo, так как только авторизованное лицо может добавлять/удалять и настраивать программное обеспечение на Ubuntu:

sudo apt install athena-jot

Система может предложить вам ввести Y/n для подтверждения продолжения установки. Пожалуйста, введите Y и нажмите Enter для продолжения, после чего программное обеспечение будет установлено на вашу систему.

Печать x чисел после числа y

С помощью команды jot вы можете вывести x чисел после числа y. Для этого используйте следующую команду:

Следующий пример прояснит вам ситуацию:

Наш пример выводит список из 5(x) значений после числа 1(y).

Обратная печать x чисел после числа y до числа z

Вы также можете использовать команду jot для обратной печати x чисел после числа y до числа z. Для этого используйте следующий синтаксис:

Следующий пример прояснит вам ситуацию:

Наш пример обратного вывода отображает значения 9(x) перед числом 10(y), пока список не достигнет числа 2(z).

Продуктивное использование команды jot

Приведем пример, в котором команда jot может быть действительно продуктивной. В этом примере мы будем использовать команду jot для печати 15 (значение x) дней января, начиная с дня 1 (значение y).

 for i in `jot 15 1`; do echo Январь $i; done

Команда factor

Как понятно из названия, команда factor в Linux используется для вычисления значений коэффициентов заданного числа.

Команда bc

Команда bc очень полезна при выполнении сложных операций в bash. Эта команда может выполнять сравнения, обрабатывать булевы выражения, вычислять квадратные корни, синусы, косинусы, тангенсы и т.д. Все, что вам нужно сделать, это передать математическое выражение команде bc следующим образом:

После этого на экране появится результат математического выражения.

Вычисление числа Пи

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

В следующем примере мы выводим значение числа pi, указав значение масштаба для округления десятичных дробей.

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

Поскольку значение шкалы равно 10, результат pi будет масштабирован до десяти десятичных знаков.

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

Вы можете выполнять простые математические операции в bash, используя набор двойных скобок. С помощью этой техники в bash можно выполнять как арифметические, так и булевы операции.
Арифметика

Следующий список арифметических операций может быть выполнен в Linux bash:

  • +, — Сложение, вычитание
  • ++, — Инкремент, декремент
  • *, / , % Умножение, деление, остаток
  • ** Значение экспоненты

Источник

Оцените статью
Adblock
detector