shell中冒号结合等号, 加号, 减号的使用小结

在十三问中, 有提到过冒号与等号的情况, 有冒号的, 只要是空值(未定义, null)都能覆盖; 没有冒号的, 只有未定义时, 才能覆盖. 但是返回值没有做详细说明.
1. 冒号与等号
shell中冒号结合等号, 加号, 减号的使用小结_第1张图片
2. 冒号与减号
shell中冒号结合等号, 加号, 减号的使用小结_第2张图片
3. 冒号与加号
shell中冒号结合等号, 加号, 减号的使用小结_第3张图片
4. 运行结果
#############   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仍为空.

可惜总结的不是很本质, 欢迎高手指导.

你可能感兴趣的:(shell中冒号结合等号, 加号, 减号的使用小结)