算数运算符

运算符

  • shell中的运算符主要有比较运算符(用于整数比较)、字符串运算符(用于字符串测试)、文件操作运算符(用于文件测试)、逻辑运算符、算术运算符、位运算符、自增自减运算符等。

算术运算符

  • 算术运算符指的是加、减、乘、除、余、幂等常见的算术运算,以及加等、减等、乘等、除等、余等复合算术运算。要特别注意的是,shell只支持整数计算,也就是说所有可能产生小数的运算都会舍去小数部分。

shell基础(算数运算符)_运算符

shell基础(算数运算符)_运算符_02

bash shell的算术运算有四种方式:

1. 使用expr外部程式

加法 r=`expr 4 + 5`
echo $r
注意! '4' '+' '5' 这三者之间要有空白
r=`expr 4 * 5` #错误
乘法 r=`expr 4 \* 5`

2. 使用$(())

r=$((4 + 5))
echo $r

3. 使用$[]

r=$[ 4 + 5 ]
echo $r

乘法
r=`expr 4 \* 5`
r=$(( 4 * 5 ))
r=$[ 4 * 5 ]
echo $r

除法
r=`expr 40 / 5`
r=$(( 40 / 5 ))
r=$[ 40 / 5 ]
echo $r

减法
r=`expr 40 - 5`
r=$(( 40 - 5 ))
r=$[ 40 - 5 ]
echo $r

求余数
r=$[ 100 % 43 ]
echo $r

乘幂 (如 2 的 3 次方)
r=$(( 2 ** 3 ))
r=$[ 2 ** 3 ]
echo $r
注:expr 沒有乘幂

4. 使用let命令

加法:
n=10
let n=n+1
echo $n
#n=11

乘法:
let m=n*10
echo $m

除法:
let r=m/10
echo $r

求余数:
let r=m%7
echo $r

乘冪:
let r=m**2
echo $r

虽然Bash shell 有四种算术运算方法,但并不是每一种都是跨平台的,建议使用expr。

另外,我们在 script 中经常有加1操作,以下四法皆可:

m=$[ m + 1]
m=`expr $m + 1`
m=$(($m + 1))
let m=m+1

自增自减

  • 自增自减运算主要包括前置自增、前置自减、后置自增、后置自减等。前置自增或自减操作会首先修改变量的值,然后再将变量的值传递出去;后置自增或后置自减则会首先将变量的值传递出去,然后再修改变量的值。自增符号为 “++”,自减符号为 “--”,操作对象只能是变量,不能是常数或表达式。

shell基础(算数运算符)_运算符_03