一、整数的四则运算

(1)使用let 表达式, 变量前不需要加'$'

letsum=num1+num2

(2)$[表达式], 变量前既可以加$, 也可以不加$

sum=$[num1+num2]sum2=$[$num1-5]sum3=$[num1+3]

(3)$((表达式)), 变量前既可以加$, 也可以不加$

result=$(($num1+num2-5))

(4)expr, 使用‘`’字符将表达式阔起来,或则使用$(expr 表达式), 操作数和操作符必须用空格分割

result=`expr$num\*4`#乘法*需要转义result2=$(expr$num/3)


二、浮点数的四则运算

bc是一个数学运算的高级工具,使用分号作为定界符,通过stdin传递给bc。

(1)设置小数精度

通过设置scale的值,指定结果的小数位数

$echo"scale=2;4/3"|bc$1.33

(2)进制转换

通过设置obase的值,将输入数字转换为obase设置的值的进制数

$echo"obase=2;3"|bc#转换为二进制$11$echo"obase=8;3"|bc#转换为八进制$3$echo"obase=8;9"|bc#转换为八进制$11$echo"obase=16;10"|bc#转换为十六进制$A


(3)一些高级应用

$echo"sqrt(16)"|bc$4$echo"10^2"|bc$100

三、例子

#!/bin/bashnum1=3num2=5#使用let时,变量前不需要加$letsum=num1+num2echo"$num1+$num2=$sum"letnum1++#自增letnum2--#自减echo"num1=$num1,num2=$num2"letnum1+=5#复合运算letnum2-=2echo"num1=$num1,num2=$num2"#使用$[表达式]进行计算div=$[num1/num2]echo"$num1/$num2=$div"sss=$[num1+num2]echo"$num1+$num2=$sss"num3=$[num1-3]echo"num3=$num3"#使用$((表达式)),其中表达式中的变量可以用$,也可以不使用$num4=$(($num1+num2-num3+4))echo"num4=$num4"#使用expr进行计算,操作数和操作符必须要空格隔开num5=`expr$num1+$num3`echo"num5=$num5"num6=`expr$num2+$num4`echo"num6=$num6"#由于操作数和操作符没有隔开,变成了一个字符串,并没有计算result=`expr$num1\*4`#乘法*需要转义echo"result=$result"result2=$(expr$num2/3)echo"result2=$result2"#以上都只能进行整数的计算,不能对浮点数进行操作

结果:

3 + 5 = 8
num1=4, num2=4
num1=9, num2=2
9 / 2 = 4
9 + 2 = 11
num3=6
num4=9
num5=15
num6=2+9 #这个即为操作数和操作符没有隔开的结果
result=36
result2=0