概述及declare命令
shell变量的缺点:弱类型变量,默认是字符串类型,进行运算很麻烦。
1、declare声明变量类型
declare [+/-][选项] 变量名
选项:
-:给变量设定类型属性
+:取消变量的类型属性
-a:将变量声明为数组型
-i:将变量声明为整数型(integer)
-x:将变量声明为环境变量
-r:将变量声明为只读变量
-p:显示指定变量的被声明的类型
2、把变量声明为数值型
例1:declare -i cc=$aa+$bb命令,进行相加运算。
aa=11
bb=22
#给变量aa和bb赋值
declare -i cc=$aa+$bb
#声明变量cc的类型是整数型,它的值是aa和bb的和
3、声明数组变量
例1:declare -a nums[3]="沙僧",声明数组。
#定义数组
nums[0]="唐僧"
nums[1]="孙悟空"
nums[2]="猪八戒"
declare -a nums[3]="沙僧"
#查看数组
# ${nums}打印的是数组的第一个元素的值
echo ${nums}
# ${nums[2]}打印的数组指定下标的值
echo ${nums[2]}
# ${nums[*]}打印的数组的所有元素
echo ${nums[*]}
例2:不使用declare -a命令,也可以声明数组。
4、声明环境变量
export其实是调用的declare命令。
例1:declare -x test=123命令,使用env查看环境变量。
declare -x test=123
和export作用相似,但其实就是declare命令的作用
5、声明变量只读属性
如果一旦把某个变量设置了只读属性,就不能对它进行操作了。
declare -r test
test是指变量名,给test赋予只读属性,但是请注意只读属性会让变量不能修改不能删除,甚至不能取消只读属性。
例1:declare -r test命令,设置test变量只读。
数值运算方法
方法1:使用declare -i进行声明
a=1
b=2
declare -i c=$a+$b
echo $c
方法2:expr或let数值运算工具
a=1
b=2
c=$(expr $a + $b)
#c的值是a和b的和,注意“+”号两侧必须有空格
echo $c
方法3:"$((运算式))"或"$[运算式]"
a=1
b=2
c1=$(($a+$b))
echo $c1
c2=$[$a+$b]
echo $c2
例1:运算
echo $(((11+4)*5/2))
echo $((14%3))
echo $((1&&0))
#逻辑与运算只有相与的两边都是1,与的结果才是1,否则与的结果是0
变量测试
变量测试在脚本优化时使用。
例1:测试x=${y-新值} ,y变量不存在
y=3
# 删除变量y
unset y
# x=${y-2},2是测试的一个新值
x=${y-2}
# 进行测试,因为变量y不存在,所以x=新值
echo $x
例2:测试x=${y-新值} ,y变量为空值
y=""
# x=${y-2},2是测试的一个新值
x=${y-2}
# 进行测试,因为变量y为空值,所以x=空值
echo $x
例3:测试x=${y-新值} ,y变量有值
y=3
# x=${y-2},2是测试的一个新值
x=${y-2}
# 进行测试,因为变量y有设置值,所以x=$y
echo $x