${var:-string},${var:+string},${var:=string},${var:?string}
1. ${var:-string}和${var:=string}:若變量var為空,則用在命令行中用string來替換${var:-string},否則變量var不為空時,則用變量var的值來替換${var:-string};對於${var:=string}的替換規則和${var:-string}是一樣的,所不同之處是${var:=string}若var為空時,用string替換${var:=string}的同時,把string賦給變量var: ${var:=string}很常用的一種用法是,判斷某個變量是否賦值,沒有的話則給它賦上一個默認值。
2. ${var:+string}的替換規則和上面的相反,即只有當var不是空的時候才替換成string,若var為空時則不替換或者說是替換成變量 var的值,即空值。(因為變量var此時為空,所以這兩種說法是等價的)
3. ${var:?string}替換規則為:若變量var不為空,則用變量var的值來替換${var:?string};若變量var為空,則把string輸出到標准錯誤中,並從腳本中退出。我們可利用此特性來檢查是否設置了變量的值。
補充擴展:在上面這五種替換結構中string不一定是常值的,可用另外一個變量的值或是一種命令的輸出。
