11.declare 命令详解及5种类型用法示例

目录

1.declare 命令及选项

2.例:数值运算 

3.例:数组变量类型 

4.例:环境变量 

5.例:只读属性

6.例:查询变量属性和取消变量属性


如果我们需要进行数值运算,可以采用以下三种方法中的任意一种:

使用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" 

猜你喜欢

转载自blog.csdn.net/weixin_46659843/article/details/123728542