shell 中包含了一组检查并赋值的表达式:
1) newValue = ${ref:-another}
如果ref值非空,则用ref的值赋值给newValue,否则用another的值赋值给newValue
x=1
v1=${x:-2}
v2=${x2:-2}
执行完,x=1,v1=1,v2=2
2)newValue=${ref:+another}
如果ref的值非空,则用another的值赋值给newValue,否则newValue为空
x=1
v1=${x:+2}
v2=${x2:+2}
执行完,x=1,v1=2,v2为空
3) newValue=${ref:=anoher}
如果ref的值非空,则将ref的值赋值给newValue,否则将another的值赋值给newValue并且ref的值也设置为another
x=1
v1=${x:=2}
v2=${x2:=2}
执行完,x=1,v1=1,v2=2,x2=2
4) newValue=${ref:?another}
如果ref的值非空,则将ref的值赋值给newValue,否则将显示another的值并且退出
x=1
v1=${x:?2}
v2=${x2:?2}
在执行v2赋值是,因为x2不存在,则脚本在此处终止并且显示2.
检测并且赋值的表达式在处理用户输入参数时特别有用,比如在用户没有输入的提供默认值。