shell教程
OutOfMemory.CN技术专栏-> shell-> shell教程-> Chapter 15. 算术扩展

Chapter 15. 算术扩展

算术扩展提供了一种强力的工具,可以在脚本中执行(整型)算法操作.可以使用backticks,doubleparentheses,或let来将字符串转换为数字表达式.一些变化使用反引

算术扩展提供了一种强力的工具, 可以在脚本中执行(整型)算法操作. 可以使用backticks, double parentheses, 或 let来将字符串转换为数字表达式.

一些变化

使用反引号的算术扩展(通常都是和expr一起使用)

z=`expr $z + 3`          # 'expr'命令将会执行这个扩展.

使用双括号, 和let形式的算术扩展

反引号形式的算术扩展已经被双括号形式所替代了 -- ((...))$((...)) -- 当然也可以使用非常方便的let形式.

z=$(($z+3))
z=$((z+3))                                  #  也正确.
                                            #  使用双括号的形式,
                                            #+ 参数解引用
                                            #+ 是可选的.

# $((EXPRESSION)) is arithmetic expansion.  #  不要与命令
                                            #+ 替换相混淆.



# 使用双括号的形式也可以不用给变量赋值.

  n=0
  echo "n = $n"                             # n = 0

  (( n += 1 ))                              # 递增.
# (( $n += 1 )) is incorrect!
  echo "n = $n"                             # n = 1


let z=z+3
let "z += 3"  #  使用引用的形式, 允许在变量赋值的时候存在空格.
              #  'let'操作事实上执行得的是算术赋值,
              #+ 而不是算术扩展.

下边是一些在脚本中使用算术扩展的例子:

  1. Example 12-9

  2. Example 10-14

  3. Example 26-1

  4. Example 26-11

  5. Example A-17

© 内存溢出 OutOfMemory.CN