Как увеличить или уменьшить переменную арифметических операций в Bash (Counter)

How to Increment and Decrement Variable in Bash (Counter)

11 Апреля 2020 | Терминал

В Bash есть несколько способов увеличить / уменьшить переменную при выполнении арифметических операций. Эта статья объясняет некоторые из них.

Как увеличить или уменьшить переменную арифметических операций в Bash (Counter)

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

Увеличение и уменьшение означает добавление или вычитание значения (обычно 1), соответственно, из значения числовой переменной. Арифметическое расширение может быть выполнено с использованием двойных скобок ((...))и $((...))или с помощью letвстроенной команды.


Использование и операторы

Самый простой способ увеличить / уменьшить переменную - использовать операторы +and -.

i=$((i+1))
((i=i+1))
let "i=i+1"

i=$((i-1))
((i=i-1))
let "i=i-1"

Этот метод позволяет увеличивать / уменьшать переменную на любое значение, которое вы хотите.

Вот пример увеличения переменной внутри until цикла:

i=0

until [ $i -gt 3 ]
do
  echo i: $i
  ((i=i+1))
done
копия
i: 0
i: 1
i: 2
i: 3

В += и -= Операторы

В дополнение к базовым операторам, описанным выше, bash также предоставляет операторы присваивания +=и -=. Эти операторы используются для увеличения / уменьшения значения левого операнда на значение, указанное после оператора.

((i+=1))
let "i+=1" 

((i-=1))
let "i-=1" 

В следующем while цикле мы уменьшаем значение iпеременной на 5.

i=20

while [ $i -ge 5 ]
do
  echo Number: $i
  let "i-=5" 
done

Number: 20
Number: 15
Number: 10
Number: 5

Использование ++ и -- операторов

Операторы ++ и -- увеличивают и уменьшают соответственно свой операнд и возвращают значение.

((i++))
((++i))
let "i++"
let "++i"

((i--))
((--i))
let "i--"
let "--i"

Операторы могут использоваться до или после операнда. Они также известны как:

  • приращение префикса: ++i
  • уменьшение префикса: --i
  • Постфиксный прирост: i++
  • Постфиксный декремент: i--


    Префиксные операторы сначала увеличивают / уменьшают операторы, 1а затем возвращают новое значение операторов. С другой стороны, постфиксные операторы возвращают значение операторов, прежде чем оно будет увеличено / уменьшено.

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

Следующие примеры демонстрируют, как ++работает оператор, когда используется до и после его операнда:

x=5
y=$((x++))
echo x: $x
echo y: $y

x: 6
y: 5
x=5
y=$((++x))
echo x: $x
echo y: $y

x: 6
y: 6


    Ниже приведен пример использования постфиксного инкрементора в скрипте bash:

#!/bin/bash
i=0
while true; do
  if [[ "$i" -gt 3 ]]; then
       exit 1
  fi
  echo i: $i
  ((i++))
done

Недостатком использования этих операторов является то, что переменная может быть только увеличена или уменьшена на 1.

Вывод

Увеличение и уменьшение переменных в Bash может выполняться различными способами. Какой бы метод вы ни использовали, результат будет одинаковым.


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...