shell的声明变量类型


因为在shell 里,所有的变量, 都默认是字符串类型, 如果需要操作非字符串类型的变量,则是需要对变量进行声明才可以生效. 在shell 中,可以通过declare 声明变量.

declare 声明变量

既然所有的变量的默认类型是字符串, 那么只要我们把变量声明为整数型不就可以运算了吗? 使用declare 命令就可以声明变量的类型.
declare [+/-]  [选项] 变量名

选项:
    -: 给变量设定类型属性
    +:  取消变量的类型属性
    -a: 将变量声明为数组型
    -i: 将变量声明为整数型(integer)
    -r: 将变量声明为只读变量. 注意,一旦设置为只读变量,既不能修改变量的值,也不能删除变量,设置不能通过+r取消只读属性
    -x: 将变量声明为环境变量
    -p: 显示指定变量的被声明的类型


在shell 里,  - 减号是设置变量类型,  + 加号反而是取消变量类型.

在shell 里,只支持 声明成 数组类型, 整数类型, 只读变量,  环境变量

将变量声明整数类型

aa=11
bb=22

declare -i cc=$aa+$bb
# 把最后的和设置成整数, shell 就知道要想加的两个变量是整数类型了.

echo $cc
# 此时就可以看到cc 是33

但是这样运算很麻烦啊, 没有办法, shell 就是这么设计的.

常用的数值运算方式(不需要声明变量类型)

我们可以使用  $ ((var1+var2))   来进行数值运算 ,  这样比较方便,这是我们常用的 数值运算 方法

将变量声明成数组类型

declare -a name[0]="shenzhen"

使用标准是这样的.但是在centos中做了优化,当变量名里带有下标的时候, 就知道是数组了, 所以是可以省略 declare 不写.

数组在shell中, 作用较少, 基本都是用来存储数据.

要使用数组里的所有数据,  ${数组名[*]}, 如果只写数组名就只拿到第一个下标的

将变量声明为环境变量

我们其实也可以使用 declare 命令把变量声明为环境变量, 和 expore 命令的作用是一样的.

declare -x test=12345
# 把变量test声明为环境变量

其实 export 命令的本质也是调用 declare -x  变量名 , 只是命令太长,不好记, 一般都是使用 export

将变量声明为只读属性

注意一旦给变量设定了只读属性,那么这个变量既不能修改 变量的值, 也不能删除变量, 甚至不能用 "+r" 选项取消只读 属性.

declare -r test


显示指定变量的被声明类型

declare -p varname

如果 declare -p 不指定变量名,就会查询所有的变量的被声明类型

文章作者: 陌上人如玉
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陌上人如玉 !
  目录