在Shell中变量的数据类型默认是字符串,是不支持数字运算的。下面这个例子想让a和b两个变量的值相加,可是运行结果发现两个变量的值并没有做相加,仅仅作为文本给打印了出来。
[root@iZ25aj1q2ovZ ~]# a=10
[root@iZ25aj1q2ovZ ~]# b=5
[root@iZ25aj1q2ovZ ~]# c=$a+$b
[root@iZ25aj1q2ovZ ~]# echo $c
10+5
如果要在shell中做运算的话,有下面几种方法可以实现:
1、expr命令,用于整数运算,不支持浮点数
# expr 算术表达式记得加反引号,算术表达式之间要有空格
a=50
b=10
c=`expr $a + $b`
echo $c
2、bc命令(结合scale命令实现浮点运算,scale的值代表小数点的精度)
echo "scale=2;1.2*2.5"|bc
3、let命令,取代并扩展expr的工具,不支持浮点数。
let number=1+5
echo $number #输出结果为6
a=10
b=5
let c=$a+$b
echo $c #输出结果为15 4、$[算术表达式]
[root@iZ25aj1q2ovZ ~]# a=8
[root@iZ25aj1q2ovZ ~]# b=2
[root@iZ25aj1q2ovZ ~]# c=$[$a+$b]
[root@iZ25aj1q2ovZ ~]# echo $c
10
5、$((算术表达式))
[root@iZ25aj1q2ovZ ~]# a=7
[root@iZ25aj1q2ovZ ~]# b=1
[root@iZ25aj1q2ovZ ~]# c=$((a+b))
[root@iZ25aj1q2ovZ ~]# echo $c
8
脚本演示0-100自动求和
#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
sum=`expr $i+$sum`
done
echo $sum