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


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仍为空.

相关内容

    暂无相关文章