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