变量unset与null的区别

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

    $str=     #str为null

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

    $echo $str


    $echo $var


     $unset str       #取消str

    $var=${str=expr}

    $echo $var

    expr

    $echo $str

    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


]$ 



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章