2010年2月24日 星期三

Shell Script 進階變數功能

變數擴展 ${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