1.“$((运算式))” 或 “$[运算式]”
shell语言偏底层,不是作为高级语言设计的。
不能直接计算
[root@hadoop ~]# a=1+2
[root@hadoop ~]# echo $a
1+2
利用expr做运算,实际转换成参数
[root@hadoop ~]# expr 1+2
1+2
[root@hadoop ~]# expr 1 + 2
3
[root@hadoop ~]# expr 5 - 2
3
乘法运算,要用转义符
[root@hadoop ~]# expr 5 * 2
expr: syntax error #直接用*识别不了
[root@hadoop ~]# expr 5 \* 2
10
更简单方式做运算
[root@hadoop ~]# echo $[5*2]
10
[root@hadoop ~]# echo $[5 * 2] #有无空格都可以
10
[root@hadoop ~]# echo $((5*2))
10
[root@hadoop ~]# a=$[6+8] #赋值给a
[root@hadoop ~]# echo $a
14
2.把表达式赋值给a方法
第一种
[root@hadoop ~]# a=$(expr 5 \* 2)
[root@hadoop ~]# echo $a
10
第二种
[root@hadoop ~]# a=`expr 5 \* 2`
[root@hadoop ~]# echo $a
10
3.计算(2+3)* 4 的值
[root@hadoop ~]# s=$[(2+3)*4]
[root@hadoop ~]# echo $s
20
4.写成脚本方式
[root@hadoop ~]# cd scripts
[root@hadoop scripts]# vim add.sh
#!/bin/bash
sum=$[($1 + $2)*$3]
echo sum=$sum
[root@hadoop scripts]# chmod +x add.sh
[root@hadoop scripts]# . add.sh 2 3 4
sum=20