算术扩展提供了一种强力的工具, 可以在脚本中执行(整型)算法操作. 可以使用backticks, double parentheses, 或 let来将字符串转换为数字表达式.
1 z=`expr $z + 3` # 'expr'命令将会执行这个扩展. |
反引号形式的算术扩展已经被双括号形式所替代了 -- ((...)) 和 $((...)) -- 当然也可以使用非常方便的let形式.
1 z=$(($z+3)) 2 z=$((z+3)) # 也正确. 3 # 使用双括号的形式, 4 #+ 参数解引用 5 #+ 是可选的. 6 7 # $((EXPRESSION)) is arithmetic expansion. # 不要与命令 8 #+ 替换相混淆. 9 10 11 12 # 使用双括号的形式也可以不用给变量赋值. 13 14 n=0 15 echo "n = $n" # n = 0 16 17 (( n += 1 )) # 递增. 18 # (( $n += 1 )) is incorrect! 19 echo "n = $n" # n = 1 20 21 22 let z=z+3 23 let "z += 3" # 使用引用的形式, 允许在变量赋值的时候存在空格. 24 # 'let'操作事实上执行得的是算术赋值, 25 #+ 而不是算术扩展. |
下边是一些在脚本中使用算术扩展的例子: