No.1:使用 expr
eg. r=`expr 4 + 5`
echo $r
注意: 4 + 5 表达式中运算符和操作数之间要有空格
# 终于找到原因了,给力啊!
此外,对于乘法运算符 * ,使用expr需要加上\进行转义 即 r=`expr 4 \* 5`
又及:expr表达式中没有乘幂**运算
No.2:使用 $(( ))
eg. r=$(( 4 + 5 ))
echo $r
注意:$( 之间没有空格, ((、)) 两对同向括弧之间也没有空格
No.3:使用 $[ ]
eg. r=$[ 4 + 5 ]
echo $r
注意:$[ 之间没有空格
No.4:使用let
eg. let a=4+5
echo $a
注意:a=4+5 这个表达式同普通的算术表达式一样,没有空格
examples:
乘法:
r=`expr 4 \* 5`
echo $r
r=$(( 4 * 5 ))
echo $r
r=$[ 4 * 5 ]
echo $r
let r=4*5
echo $r
4个输出都为:20
除法:
r=`expr 40 / 5`
echo $r
r=$(( 40 / 5 ))
echo $r
r=$[ 40 / 5 ]
echo $r
let r=40/5
echo $r
4个输出都为:8
減法:
r=`expr 40 - 5`
echo $r
r=$(( 40 - 5 ))
echo $r
r=$[ 40 - 5 ]
echo $r
let r=40-5
echo $r
4个输出都为:35
取模:
r=`expr 100 % 43`
echo $r
r=$(( 100 % 43 ))
echo $r
r=$[ 100 % 43 ]
echo $r
let r=100%43
echo $r
4个输出都为:14
乘冪 (如 2 的 3 次方):
r=$(( 2 ** 3 ))
echo $r
r=$[ 2 ** 3 ]
echo $r
let r=2**3
echo $r
4个输出都为:8
注:expr 沒有乘冪
虽然Bash shell有好几种算术运算方法,但并不是每一种方法都可以跨平台的,为使脚本能跨平台使用,最好使用`expr expression` 或 $(( )),Linux程序设计3rd一书建议使用 $(()) 。