Как увеличивать и уменьшать переменную в Bash (Counter)

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

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

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

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

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

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

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

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

((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 можно выполнять разными способами. Какой бы метод вы ни использовали, результат будет одинаковым.

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

Оставьте комментарий