之前看到一個例子,剛開始不明白後面通過查閱查閱資料理解了,今天整理資料的時候又看到就寫出來保存在這裏,方便之後查閱。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
]$