目录
一、运算
二、得到结果
三、小脚本案例
一、运算
- shell是默认变量为字符串,不会直接进行计算:
[root@hadoop-master ~]a=1+2
[root@hadoop-master ~]echo $a
1+2
- 若需要计算,可使用expr,将1、2、+当做参数传给expr
[root@hadoop-master ~]expr 1 + 2
3
- 使用乘法时,需要转译
[root@hadoop-master ~]expr 5 * 2
expr: 语法错误
[root@hadoop-master ~]expr 5 \* 2
10
一般,对于需要进行的计算,要用以下语法:
$"(())"或者$"[]",即:
[root@hadoop-master ~]expr $[5 * 2]
10
[root@hadoop-master ~]echo $((5*2))
10
二、得到结果
如何将计算命令的值作为结果进行传递?
使用$(),将计算结果放入小括号,或者使用反引号(电脑左上角)
一些错误示例:
[root@hadoop-master ~]b=expr $[5 * 2]
-bash: 10: 未找到命令
[root@hadoop-master ~]d="expr 5 \* 1"
[root@hadoop-master ~]echo $d
expr 5 \* 1
#输出的是文本
正确的示例:
[root@hadoop-master ~]b=$(expr $[5 * 2])
[root@hadoop-master ~]echo $b
10
[root@hadoop-master ~]c=`expr $[5 * 2]`
[root@hadoop-master ~]echo $c
10
整体来讲还是使用上面的 $"(())"或者$"[]"方便一些
三、小脚本案例
做一个脚本算a+b的值
不传参数会报错
[root@hadoop-master sh_test]add.sh
./add.sh:行2: + : 语法错误: 期待操作数 (错误符号是 "+ ")
m=
计算
[root@hadoop-master sh_test]add.sh 3 6
m=9