默认情况下shell的变量类型都是字符型
1.使用declare声明变量类型
declare [+/-][选项] 变量名
-:给变量设定类型属性
+:取消变量类型属性
-a:声明为数组
-i:声明为整型
-x:声明为环境变量
-r:声明为只读
-p:显示变量被声明的类型
使用declare声明类型
[root@hadoop200 ~]# aa=11
[root@hadoop200 ~]# bb=22
[root@hadoop200 ~]# cc=$aa+$bb
[root@hadoop200 ~]# echo $cc
11+22
[root@hadoop200 ~]# declare -i dd=$aa+$bb
[root@hadoop200 ~]# echo $dd
33
使用declare查看声明类型
[root@hadoop200 ~]# declare -p cc
declare -- cc="11+22"
[root@hadoop200 ~]# declare -p dd
declare -i dd="33"
[root@hadoop200 ~]#
使用declare声明数组(可以使用[]直接声明数组,不使用declare -a)
[root@hadoop200 ~]# a[0]=gao
[root@hadoop200 ~]# a[1]=lei
[root@hadoop200 ~]# declare -a a[2]=jack
[root@hadoop200 ~]# echo $a
gao
[root@hadoop200 ~]# echo ${a}
gao
[root@hadoop200 ~]# echo ${a[*]}
gao lei jack
[root@hadoop200 ~]# echo ${a[1]}
lei
[root@hadoop200 ~]#
使用declare声明环境变量(和export的作用类似,实际上export是declare -x的简写)
[root@hadoop200 ~]#declare -p
...
2.使用expr或let数值运算工具
[root@hadoop200 ~]# aa=12
[root@hadoop200 ~]# bb=13
[root@hadoop200 ~]# cc=$(expr $aa + $bb)
[root@hadoop200 ~]# echo $cc
25
3.$((运算式)) 或 $[运算式]
[root@hadoop200 ~]# aa=20
[root@hadoop200 ~]# bb=30
[root@hadoop200 ~]# cc=$(($aa+$bb))
[root@hadoop200 ~]# echo $cc
50
[root@hadoop200 ~]# dd=$[$aa+$bb]
[root@hadoop200 ~]# echo $dd
50
[root@hadoop200 ~]#