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