每种程序语言都需要算数操作。shell也有一些算数操作的方法。
shell环境可以使用let,(())和[]命令执行一些基础的算数操作。expr和bc这两个公用的命令对于执行预操作也是很有帮助的。
可以将数值指定为常规变量赋值,该赋值存储为字符串。然后,我们通常使用以下方法来操作数字:
#!/bin/bash
no1=4;
no2=5;
let命令可以被直接用来进行一些基本的操作。
在使用let时,我们可以直接使用变量名称,无需加$前缀,例如:
let result=no1+no2
echo $result
自增操作:
$ let no1++
自减操作:
$ let no1--
let no+=6
let no-=6
相当于
let no=no+6
let no=no-6
交错法
使用[]命令与let命令相同,如下:
result=$[no1+no2]
在中括号内使用$前缀也是合法的,例如:
result=$[$no1+5]
(())也可以被用来计算。在使用(())操作时需要$前缀+变量名,如下:
result=$((no1+50))
expr也可以用来做一些基础操作:
result='expr 3+4'
result=$(expr $no1 + 5)
以上方法不支持浮点型计算,只支持整型计算。
bc可用来做精确的计算。它的范围很广泛。我们可以执行浮点型计算,如下:
echo "4 * 0.56" | bc
2.24
no = 54;
result='echo "$no * 1.5" | bc'
echo $result
81.0
加法参数可以通过分号分割之后再通过bc命令计算。
指定小数精度(规模):在以下的例子中,scale=2参数用来设置小数长度为2。因此bc命令输出的结果包括两位小数:
echo "scale=2;3/8" | bc
0.37
bc的基本转换:我们可以从一个系统基数转换为另一个。让我们把十进制转换未二进制,再把二进制转为八进制:
#!/bin/bash
Description:Number conversion #数值转换
no=100
echo "obase=2;$no" | bc
1100100
no=1100100
echo "obase=10;ibase=2;$no" | bc
100
计算平方根或平方可如下操作:
echo "sqrt(100)" | bc #平方根
echo "10^10" | bc #平方