编写 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 中的变量的递增和递减可以以许多不同的方式执行。无论使用何种方法,结果都是一样的。
领取专属 10元无门槛券
私享最新 技术干货