Skip to content

Latest commit

 

History

History
96 lines (81 loc) · 3.89 KB

File metadata and controls

96 lines (81 loc) · 3.89 KB

变量设置模式

一、检查变量是否已经设置值

  • 1、测试变量是否已设置值或被初始化。如果变量未被初始化,则返回 value。

    • 命令格式如下:

       var=${var:-value}
       var=${var-value}
      
    • 例子:测试变量是否被初始化,如果未被初始化,在返回一个默认的值。

      # 变量 name 未设初值则返回默认值
      [root@localhost ~]#  echo ${name:-zhangsan}
      zhangsan
      # 可以看出,虽然返回了默认值,但是变量 name 并未赋值
      [root@localhost ~]#  echo ${name:-lisi}
      lisi
      # 为变量 name 赋值
      [root@localhost ~]#  name=wangwu
      # 因为变量 name 已经赋值,所以返回变量的值
      [root@localhost ~]#  echo ${name:-zhangsan}
      wangwu
      # 清除变量 name
      [root@localhost ~]#  unset name
      # 变量那么未赋初值,返回默认值
      [root@localhost ~]#  echo ${name:-zhangsan}
      zhangsan
      
  • 2、测试变量是否已设置值或被初始化。如果变量未被初始化,则使用另一个设定的值。与上面命令不同之处在于,将默认值赋值给变量。

    • 命令格式如下:

       var=${var:=value}
      
    • 例子:测试变量是否被初始化,如果未被初始化,在返回一个默认的值并将默认值赋值给变量。

       # 变量 id 未被赋值,返回默认值并且将值赋给变量 id
       [root@localhost ~]# echo ${id:=1001}
       1001
       # 因为变量 id 已经赋值 1001,所以直接返回
       [root@localhost ~]# echo ${id:=1002}
       1001
       # 清除变量 id
       [root@localhost ~]# unset id
       # 变量 id 未赋值,返回默认值 1002 并赋值给变量 id
       [root@localhost ~]# echo ${id:=1002}
       1002
       # 显示变量 id 的值,
       [root@localhost ~]# echo $id
       1002
       # 因为变量 id 已经赋值,所以直接返回已有的值
       [root@localhost ~]# echo ${id:=1003}
       1002
      
  • 3、测试变量是否已设置值或被初始化。如果变量未被初始化,则返回一个空串。如果已设置初始值,则将新值返回但并不赋值给变量。

    • 命令格式如下:

       var=${var:+value}
      
    • 例子:测试变量是否被初始化,如果未被初始化,在返回一个空串。否则,返回新值但不会将新值赋值给变量。

       # 变量 price 未被赋初值,返回空串
       [root@localhost ~]# echo ${price:+100}
       # 如果变量 price 未赋值,将新值 200 赋值给变量 price
       [root@localhost ~]# price=${price:-200}
       # 打印变量的值,为 200
       [root@localhost ~]# echo $price
       200
       # 如果变量已经赋值,则返回新值,但是并不会将新值赋给变量 price
       [root@localhost ~]# echo ${price:+100}
       100
       # 打印变量 price,变量的值还是旧值 200
       [root@localhost ~]# echo $price
       200
      

二、设置只读变量

  • 在声明变量并赋值后,使用readonly命令修饰,变量就成了只读变量,在整个生命周期内不能修改了。
    • 例子:将变量声明为只读变量。

      # 声明变量并赋值
      [root@localhost ~]# name=zhangsan
      # 将变量设置成只读变量
      [root@localhost ~]# readonly name
      # 打印变量的值
      [root@localhost ~]# echo $name
      zhangsan
      # 为变量重新赋值,提示为只读不能修改
      [root@localhost ~]# name=lisi
      -bash: name: readonly variable
      # 变量声明时设置为只读
      [root@localhost ~]# readonly id=1001
      [root@localhost ~]# echo $id
      1001
      # 为变量重新赋值,提示为只读变量
      [root@localhost ~]# id=1002
      -bash: id: readonly variable