${str=expr}和${str:=expr}区别
在第5页,看来很多人对${str=expr}和${str:=expr}还不是很明白,以下是它们的具体解释,这回大家应该能完全理解了。
$ str= # 設為 null
$ var=${str=expr} # 定義 var
$ echo $var
$ echo $str
$ unset str # 取消
$ var=${str=expr} # 定義 var
$ echo $var
expr
$ echo $str
expr
${str=expr}
若$str没设定,则expr作为返回值,同时将$str赋值为expr。否则以$str的值作为返回值。
${str:=expr}
若$str没设定或为null,则expr作为返回值,同时将$str赋值为expr。否则以$str的值作为返回值。
* 两者在 not set 与 not null 都一致
* 但当 null 值时,${str=expr}会将 $var 与 $str 都设为 null ,但${str:=expr}则设为 expr