shell中冒號結合等號, 加號, 減號的使用小結
在十三問中, 有提到過冒號與等號的情況, 有冒號的, 只要是空值(未定義, null)都能覆蓋;
沒有冒號的, 只有未定義時, 才能覆蓋. 但是返回值沒有做詳細說明.
1. 冒號與等號
2. 冒號與減號
3. 冒號與加號
4. 運行結果
[sql]
############# Test = #############
Case 1: varible unset
str= abcd
var= abcd
str= abcd
var= abcd
Case 2: varible null
str=
var=
str= abcd
var= abcd
Case 3: varible not null
str= xyz
var= xyz
str= xyz
var= xyz
############# Test - #############
Case 1: varible unset
str=
var= abcd
str=
var= abcd
Case 2: varible null
str=
var=
str=
var= abcd
Case 3: varible not null
str= xyz
var= xyz
str= xyz
var= xyz
############# Test + #############
Case 1: varible unset
str=
var=
str=
var=
Case 2: varible null
str=
var= abcd
str=
var=
Case 3: varible not null
str= xyz
var= abcd
str= xyz
var= abcd
5. 總結
1. 設定缺省值(:=): 1.1 未定義時, 生成缺省值;
1.2 空值時, 有冒號就生成缺省值;
1.3 有值時, 不覆蓋.
2. 缺省值(:-): 2.1 未定義時, 原變量str不會變; 返回值var可覆蓋;
2.2 空值時, 變量str不會變;
2.3 有值時, 不覆蓋.
3. 覆蓋缺省值(:+): 3.1 未定義時, 原變量str, 返回值var不會變;
3.2 空值時, 原變量str不會變;
3.3 有值時, 覆蓋變量str的缺省值
注意:
1. =, -有值時, 原變量不變, 只有:+才能覆蓋;
2. +, -無值時, 原變量str仍為空.