之前看到一个例子,刚开始不明白后面通过查阅查阅资料理解了,今天整理资料的时候又看到就写出来保存在这里,方便之后查阅。ide
$str= #str为null
测试
$var=${str=expr} #定义var
it
$echo $str
class
$echo $var
变量
$unset str #取消str
di
$var=${str=expr}
view
$echo $var
vi
expr
co
$echo $str
editor
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
]$