1 stringZ=abcABC123ABCabc
2
3 echo ${#stringZ} # 15
###################################
1 stringZ=abcABC123ABCabc
2 # 0123456789.....
3 # 以0开始计算.
4
5 echo ${stringZ:0} # abcABC123ABCabc
6 echo ${stringZ:1} # bcABC123ABCabc
7 echo ${stringZ:7} # 23ABCabc
8
9 echo ${stringZ:7:3} # 23A
10 # 提取的子串长为3
11
12
13
14 # 有没有可能从字符串的右边结尾处提取?
15
16 echo ${stringZ:-4} # abcABC123ABCabc
17 # 默认是整个字符串,就相当于${parameter:-default}.
18 # 然而. . .
19
20 echo ${stringZ:(-4)} # Cabc
21 echo ${stringZ: -4} # Cabc
22 # 这样,它可以工作了.
23 # 圆括号或附加的空白字符可以转义$position参数.
24
25 # 多谢Dan Jacobson指出这点.
#######################################################
1 stringZ=abcABC123ABCabc
2 # |----|
3 # |----------|
4
5 echo ${stringZ#a*C} # 123ABCabc
6 # 剥去匹配'a'到'C'之间最短的字符串.
7
8 echo ${stringZ##a*C} # abc
9 # 剥去匹配'a'到'C'之间最长的字符串.
##############################################################
1 stringZ=abcABC123ABCabc
2 # ||
3 # |------------|
4
5 echo ${stringZ%b*c} # abcABC123ABCa
6 # 从$stringZ后面尾部开始,剥去匹配'a'到'C'之间最短的字符串.
7
8 echo ${stringZ%%b*c} # a
9 # 从$stringZ后面尾部开始,剥去匹配'a'到'C'之间最长的字符串.
######################################################################
1 stringZ=abcABC123ABCabc
2
3 echo ${stringZ/abc/xyz} # xyzABC123ABCabc
4 #用'xyz'代替第一个匹配的'abc'.
5
6 echo ${stringZ//abc/xyz} # xyzABC123ABCxyz
7 # 用'xyz'代替所有的'abc'.
##########################################################
1 stringZ=abcABC123ABCabc
2
3 echo ${stringZ/#abc/XYZ} # XYZABC123ABCabc
4 # 用'XYZ'替换前端的'abc'.
5
6 echo ${stringZ/%abc/XYZ} # abcABC123ABCXYZ
7 # 用'XYZ'替换后端的'abc'.