Сложение, вычитание, умножение, деление, модуль в Bash

В зависимости от того, какой тип работы вы хотите, чтобы ваши сценарии выполнялись, вы можете в конечном итоге использовать арифметику много или не много. Однако разумная уверенность в том, что вам нужно будет использовать арифметику в какой-то момент. Подобно переменным, их разумно легко реализовать, и знание того, как это сделать, является важным навыком мастерства мастеров Bash.

Существует несколько способов арифметики в сценариях Bash. Мы рассмотрим их для полноты, но рекомендуемый подход - это арифметическое расширение (последнее охватывает).

Let

Let это встроенная функция Bash, которая позволяет нам выполнять простую арифметику. Он следует основному формату:

let <арифметическое выражение>

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

Давайте рассмотрим простой пример:

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 - это сокращение для приращения значения переменной a на 1. Это то же самое, что и запись «a = a + 1».
  • Строка 16 - Мы можем также включить в выражение другие переменные.

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

оператор операция
+, -, / *, / Сложение, вычитание, умножение, деление
var ++ Увеличьте переменную var на 1
var-- Уменьшить переменную var на 1
% Модуль (возвращает остаток после деления)

Эти операторы могут использоваться и в других механизмах, описанных ниже.

Expr

Expr похож на let, но вместо сохранения результата на переменную вместо этого выводит ответ. В отличие от let вам не нужно заключать выражение в кавычки. Вы также должны иметь пробелы между элементами выражения. Также часто используется выражение expr в подстановке команд для сохранения вывода в переменную.

expr item1 оператор item2

Давайте рассмотрим простой пример:

expr_example.sh

#!/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 - Некоторые символы имеют особое значение для Bash, поэтому мы должны избегать их (поставить обратную косую черту перед), чтобы удалить их особое значение.
  • Строка 12 - Здесь мы покажем модуль оператора . Модуль - это остаток, когда первый элемент делится на второй элемент.
  • Строка 14 - На этот раз мы используем expr в подстановке команд, чтобы сохранить результат в переменной a.

Двойные скобки

В разделе «Переменные» мы увидели, что мы можем легко сохранить вывод команды в переменной. Оказывается, этот механизм также может сделать базовую арифметику для нас, если мы немного подберем синтаксис. Мы делаем это, используя двойные скобки:

$ ((выражение))

Вот пример для иллюстрации:

expansion_example.sh

#!/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 - Это немного другая форма. Здесь значение переменной b увеличивается на 1 (используя тот же механизм, что и в случае let ). Когда мы это делаем, нам не нужен знак $, предшествующий скобкам.
  • Строка 19 - Это немного другая форма предыдущего примера. Здесь значение переменной b увеличивается на 3. Это сокращение для b = b + 3 .
  • Строка 19 - В отличие от других методов, когда мы делаем умножение, нам не нужно выходить из знака * .

Таким образом, вы можете видеть, что double parenthese достаточно гибко в том, как вы форматируете его выражение. Это часть того, почему мы предпочитаем этот метод. Поскольку двойные круглые скобки встроены в Bash, он также работает более эффективно (хотя, честно говоря, с сырой вычислительной мощью машин в наши дни разница в производительности действительно несущественна).

Длина переменной

Это не арифметика, но она может быть весьма полезна. Если вы хотите узнать длину переменной (сколько символов), вы можете сделать следующее:

${#переменная}

Вот пример:

length_example.sh

#!/bin/bash
# Показывать длину переменной.

a='Hello World'
echo ${#a} # 11

b=4953
echo ${#b} # 4

Часть 3. Пользовательский ввод в Bash
Часть 5. If, else, case в Bash

Источник: https://ryanstutorials.net/bash-scripting-tutorial/bash-arithmetic.php

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Adblock
detector