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


]$ 



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