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.
檢測並且賦值的表達式在處理用戶輸入參數時特別有用,比如在用戶沒有輸入的提供默認值。