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