目录
如果我们需要进行数值运算,可以采用以下三种方法中的任意一种:
使用declare声明变量类型:既然所有变量的默认类型是字符串型,那么只要我们把变 量声明为整数型就可以进行运算了。使用declare命令就可以实现声明变量的类型。命令如下:
1.declare 命令及选项
【+/-】【子选项】 变量名
子选项:
-:给变量设定类型属性。
+:取消变量的类型属性。
-a:将变量声明为数组型。
-i:将变量声明为整数型(integer)。
-r:将变量声明为只读变量。注意,一旦设置为只读变量,既不能修改变量的值也不能删除变量,甚至不能通过+r取消只 读属性。
-x:将变量声明为环境变量。
-p:显示指定变量的被声明类型。
2.例:数值运算
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
[root@localhost ~]# declare -i cc=$aa+$bb #将变量声明为整数型。
[root@localhost ~]# echo $cc
33
3.例:数组变量类型
所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量集合。这个名字成为数组,编号称为下标。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也会称为下表变量。
变量和数组都是用来保存数据的,只是变量只能赋予一个数据值,一旦重复赋值,后一个值就会覆盖前一个值。而数组可以赋予一组相同类型的数据值。
例:
[root@localhost ~]# name[0]="aa" #数组中第一个变量是“aa”
[root@localhost ~]# name[1]="bb" #数组中第二个变量是“bb”
[root@localhost ~]# name[2]="cc" #数组中第三个变量是“cc”
[root@localhost ~]# echo $name #输出数组的内容,如果只写数名,aa那么只会输出第一个下标变量。
[root@localhost ~]# echo ${name[1]} #下表1输出了bb
bb
[root@localhost ~]# echo ${name[*]} #用数组【*】输出数组所有内容
aa bb cc
#(数组下表是从0开始的,在调用数组时,需要用${数组[下标]}的方式来读取)
4.例:环境变量
我们可以用declare命令把变量声明为环境变量,和export命令的作用是一样的。
[root@localhost ~]# declare -x test=123 #用declare命令-x选项将test=123声明为环境变量。
[root@localhost ~]# env | grep test #在env中查找是否有test的环境变量。
test=123
环境变量可用在创建变量的shell和从该shell派生的任意子shell或进程中,因此,环境变量通常又被称为全局变量。环境变量被创建时所处的shell被称为父shell,如果在父shell中再创建一个shell,那么该shell被称为子shell。当子shell产生时,它会继承父shell的环境变量为自己所用,所以说环境变量可从父shell传给子shell。但注意,环境变量只能向下传递而不能向上传递。“传子不传父”
5.例:只读属性
[root@localhost ~]# declare -r test #给test赋予只读属性
[root@localhost ~]# test=456 #test变量的值不能修改了
bash: test: readonly variable
#bash,
test,只读变量
[root@localhost ~]# declare +r test #试图取消只读属性
bash: declare: test: readonly variable #失败..
[root@localhost ~]# unset test #删除变量
bash: unset: test: cannot unset: readonly variable #再次失败.....
一旦给变量设定了只读属性,那么这个变量既不能修改变量的值,也不能删除变量,不能用+r选项取消只读属性。但是, 因为这个变量只是命令行声明的,所以只要重新登录或重启,这个变量就会消失。
6.例:查询变量属性和取消变量属性
变量属性的查询使用-p选项,变量属性的取消使用+选项。命令如下:
[root@localhost ~]# abc=123 #变量赋值abc=123
[root@localhost ~]# declare -p abc #用declare -p查看
declare -- abc="123"
[root@localhost ~]# declare -i abc #declare -i声明变量abc为整数型
[root@localhost ~]# declare -p abc #查看
declare -i abc="123"
[root@localhost ~]# name[0]=aa #数组
[root@localhost ~]# name[1]=bb
[root@localhost ~]# name[2]=cc
[root@localhost ~]# declare -p name #查看数组型
declare -a name='([0]="aa" [1]="bb" [2]="cc")'
[root@localhost ~]# declare -p test #test变量是环境变量和只读变量
declare -rx test="123"
[root@localhost ~]# declare +x test #取消test变量的环境变量属性
[root@localhost ~]# declare -p test #查看test
declare -r test="123"