变量unset与null的区别

之前看到一个例子,刚开始不明白后面通过查阅查阅资料理解了,今天整理资料的时候又看到就写出来保存在这里,方便之后查阅。ide

    $str=     #str为null
测试

    $var=${str=expr}  #定义var
it

    $echo $str
class


    $echo $var
变量


     $unset str       #取消str
di

    $var=${str=expr}
view

    $echo $var
vi

    expr
co

    $echo $str
editor

    expr


看出结果的不一样了吗?  

  

为什么执行一样的命令,得出的结果倒是不一样呢?

var=${str=expr},他的工做机制是这样:若是变量str不存在,就将expr做为返回值并将expr赋值给str,不然就返回str原来的值。

我想大家应该明白上面的缘由了。还有类似的个命令:

var=${str:=expr},多了个冒号。

意思是:若是变量str不存在或者为null,就将expr做为返回值并将expr赋值给str,不然就返回str原来的值。

++++++++我分割线+++++++++

咱们能够作下简单的测试:

]$ var=${now=expr}    #变量不存在时

]$ echo $now

expr

]$ echo $var

expr

]$ old=12        #变量已赋值时

]$ var1=${old=expr}

]$ echo $old

12

]$ echo $var1

12

]$ old2=        #变量值为空时

]$ var2=${old2=expr}

]$ echo $old2


]$ echo $var2


]$ 

相关文章
相关标签/搜索