變數擴展 ${varname}
命令替換 $(command)
算術擴展 $((expression))
${var:-default}
測試var,若未定義或為null值,則傳回default,否則傳回var
${var:=default}
測試var,若未定義或為null值,則將var設為default
${var:?message}
測試var,若未定義或為null值,則印出message,並且中斷script執行
${var:+value}
測試var,若未定義或為null值,則傳回value,否則傳回null
上述各式,若移去 :,則只測有無定義,不測是否為空值
-----------------------------------------------------------
取字串切片
${var:pos}
${var:pos:len}
計算字串長度
${#var}
取得陣列元素個數
${#array[@]}
${#array[*]}
比對樣式,做刪除字串的動作
${var#pattern}
${var##pattern}
${var%pattern}
${var%%pattern}
#: 從最左邊開始
%: 從最右邊開始
比對樣式,做取代的動作
${var/pattern/sub_str}
${var//pattern/sub_str}
${var/#pattern/sub_str}
${var/%pattern/sub_str}
[Reference]
Linux Shell 程式設計實務 Chapter 7