第一种扩展形式,按长度截取:${PARAMETER:OFFSET:LENGTH};例:

i=http://www.baidu.com/a/b.html;j=${i:1:10};echo $j
ttp://www.

第二种扩展形式,按模式截取:${PARAMETER#WORD}、${PARAMETER##WORD}、${PARAMETER%WORD}、${PARAMETER%%WORD};例:

i=http://www.baidu.com/a/b.html;b=${i%/};a=${i%%/};c=${i#/};d=${i##/};echo $b;echo $c;echo $d;echo $a
http://www.baidu.com/a
/www.baidu.com/a/b.html
b.html
http:

第三种扩展形式,按模式替换:${PARAMETER/PATTERN/STRING};${PARAMETER//PATTERN/STRING},例:

i=http://www.baidu.com/a/b.html;x=${i/baidu/google};y=${i//?a/xyz};echo $x;echo $y
http://www.google.com/a/b.html
http://www.xyzidu.comxyz/b.html

第四种扩展形式,指定默认值:${PARAMETER:-WORD}、${PARAMETER:+WORD}、${PARAMETER:?WORD}、${PARAMETER:=WORD},例:

unset x;y=”abc def”; echo “/${x:-‘XYZ’}/${y:-‘XYZ’}/$x/$y/”
/’XYZ’/abc def//abc def/

unset x;y=”abc def”; echo “/${x:=’XYZ’}/${y:=’XYZ’}/$x/$y/”
/’XYZ’/abc def/’XYZ’/abc def/

( unset x;y=”abc def”; echo “/${x:?’XYZ’}/${y:?’XYZ’}/$x/$y/” ) >so.txt 2>se.txt
cat so.txt
cat se.txt
-bash: x: XYZ

unset x;y=”abc def”; echo “/${x:+’XYZ’}/${y:+’XYZ’}/$x/$y/”
//’XYZ’//abc def/

说明:-返回默认值,但不更改变量本身;=返回默认值同时更改变量为默认值;?返回默认值到标准错误;+与-相反。