默认情况下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 ~]#