參數替換
-
等價替換
${var_name} 等價於 $var_name
-
var:-default 和 var-default
$(var:-default) 當var爲空或未定義時整個表達式的值爲default $(var-default) 當且僅當var未定義時整個表達式的值爲default
-
var:=default 和 var=default
$(var:=default) 當var爲空或未定義時整個表達式的值爲default,並且將var的值設置爲default $(var=default) 當且僅當var未定義時整個表達式的值爲default,並且將var的值設置爲default
-
var:?default 和 var?message
$(var:?message) 當var爲空或未定義時,打印錯誤信息,信息內容爲message表示的值 $(var?message) 當且僅當var未定義時,打印錯誤信息,信息內容爲message表示的值
-
var:+default 和 var+default
$(var:+default) 當var已定義且不爲空時整個表達式的值爲default $(var+default) 當var已定義時整個表達式的值爲default(不管var是否是空)
字符串截取
- ${str:offest} 從下標offset(含)開始截取到末尾的子串
- ${str:offest:length} 從下表offset(含)開始向後截取長度爲length的子串,長度超出不報錯
- ${str:offest:index} 此處的index爲負數,最後一個字符爲-1,依次往前爲-2,-3。此表達式截取offset(含)到index(不含)之間的子串,當index表示的位置在offset左邊時會報錯
變量匹配
${!prefix*}、${!prefix@} 將帶有前綴爲prefix的變量名打印出來
數組操作
1.${!name[@]}、${!name[*]} 將數組name的所有下標返回,如果變量name不是數組則返回0,不存在則空
2.${name[@]}、${name[*]}將數組name的所有元素返回,如果變量name不是數組則返回name的值,不存在則空
3.${name[index]} 將數組name的index處的元素返回,如果變量name不是數組且index爲0時返回name的值,變量或索引index處的元素不存在則返回空
正則匹配替換
1、${parameter#word}、${parameter##word}
從頭開始掃描word,將匹配word正則表達的字符過濾掉
#爲最短匹配,##爲最長匹配
2、${parameter%word}、${parameter%%word}
從尾開始掃描word,將匹配word正則表達式的字符過濾掉
%爲最短匹配,%%爲最長匹配
3、${parameter/pattern/string}、${parameter//pattern/string}
/表示只替換一次
//表示全部替換