算术扩展: $((算术式))
使用外部程式:expr 算术式
使用$[]: $[算术式]
使用内置命令: declare -i 变量=算术式
使用内置命令: let 算术式
注意:算术式由操作数和运算符组成
若算术式中变量不存在或为空,则该变量值为0
算术式中若包含变量或变量扩展,算术运算之前变量会替换,扩展会展开
若算术式中数字以0开头则视为八进制,0X开头视为十六进制
不同进制数字可用 "进制#数字" 来表示
算术式中有变量时该变量前最好不要加$,以免该变量不存在造成语法错误
赋值运算:%= , <<= (位左移), >>= (位右移), &= (位AND), ^= (位互斥), |= (位OR)
使用expr做算术运算:(注意:算术式'中含有bash shell特殊字符时需要用\转义)
a=`expr Arg1 \| Arg2` :Arg1存在非空非0,则传回Arg1,否则传回Arg2
a=`ecpr Arg1 \& Arg2` :Arg1和Arg2都存在非空非0,则传回Arg1,否则传回0
算术式中运算符和操作数之间必须有有空格隔开(与declare相反)
expr的本来作用是在“标准输出”显示表达式的值。因其为外部程序而与shell无关,可跨平台
let 和 expr 的运算是整数运算,不包括浮点预算。
使用declare做算术运算:
注:使用declare -i设定变量
算术式中运算符和操作数之间不能有空格
特殊符号不必使用\转义,如:*乘法,**乘方(expr中无乘方)
算术式中可以包含其他变量且变量前不需加$
let与declare用法大致相同
注意:let必须是完整的算术表达式,即有等号两边
(())、expr 可以只有等号右边的计算,由$((...))、$(expr ...)、`expr ...` 查看返回结果
^_^
转载于:https://blog.51cto.com/junight/1729166