${#string} 返回$string的长度
${string:position} 在$string中,从位置$position之后开始提取子串
$(string:position:length) 在$string中,从位置$position之后开始提取长度为$length的子串
${string#substring} 从变量$string开头开始删除最短匹配$substring子串
$(string##substring) 从变量$string开头开始删除最长匹配$substring子串
${string%substring} 从变量$string结尾开始删除最短匹配$substring子串
${string%%substring} 从变量$string结尾开始删除最长匹配$substring子串
${string/substring/replace} 使用$replace,来代替第一个匹配的$substring
${string/#substring/replace} 如果$string前缀匹配$substring,就用$replace来代替匹配$substring
依次举例说明:
定义xcn变量,内容为“i am xcn”
[root@XCN ~]# xcn="i am xcn"
[root@XCN ~]# echo ${xcn}
i am xcn
1)返回字符串xcn变量字符串的长度
[root@XCN ~]# echo ${#xcn}
8
思路 : echo $xcn|wc -m
[root@XCN ~]# echo $xcn|wc -L
8
2)截取xcn变量字符串从第2个字符之后开始截取,默认取后面字符的全部,第2个字符不包含在内。也可理解为删除前面的多少个字符。
[root@XCN ~]# echo ${xcn:2}
am xcn
3)截取xcn变量字符串从第2个字符之后开始取,取两个字符
[root@XCN ~]# echo ${xcn:2:2}
am
提示:类似cut -c参数
[root@XCN ~]# echo ${xcn}|cut -c 1-4
i am
[root@XCN ~]# echo ${xcn}|cut -c 3-4
am
4)从变量$xcn开头开始删除最短匹配"i am"子串
[root@XCN ~]# echo ${xcn#i am}
xcn
5)从变量$xcn开头开始删除最长匹配"i am old"子串
[root@XCN ~]# echo ${xcn##i am x}
cn
6)从变量$xcn结尾开始删除最短匹配xcn子串
[root@XCN ~]# echo ${xcn%xcn}
i am
[root@XCN ~]# echo ${xcn#i am}
xcn
7)从变量$xcn结尾开始删除最长匹配boy子串
[root@XCN ~]# echo ${xcn%%xcn}
i am
8)使用baishuchao字符串,来替换变量xcn第一个匹配的xcn字符串
[root@XCN ~]# echo ${xcn/xcn/baishuchao}
i am baishuchao
10)使用he is 字符串,来代替从变量$xcn开头开始匹配的i am字符串
[root@XCN ~]# echo ${xcn/#i am/he is}
he is xcn
提示:统一规律 #从开头开始 ,%从结尾开始