變量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


]$ 

相關文章
相關標籤/搜索