1.子串的语法和功能

子串语法 功能说明
${#string} 变量最前面加井号可以返回变量的长度
${string:n} 变量后面加冒号并写数字,从该位置后提取字符串
${string:n:m} 从n位置提取长度是m的字符串
${string#word} 从开头开始删除最短匹配word子串的内容
${string##word} 从开头开始删除最长匹配word子串的内容
${string%word} 从结尾开始删除最短匹配word子串的内容
${string%%word} 从结尾开始删除最长匹配word子串的内容
${string/A/B} 用B字符串替代第一个匹配的A子串
${string//A/B} 用B字符串替代所有匹配的A子串
${string/#A/B} 如果源字符串前缀匹配A,则用B字符串替代A
${string/%A/B} 如果源字符串后缀匹配A,则用B字符串替代A

说明:子串可以是一个正则表达式。

2.案例
1)提取字符串和计算长度案例

cat t1.sh


OLD=abcABC123ABCabc
echo ${#OLD}
echo ${OLD:6}
echo ${OLD:6:4}

sh t1.sh

15            #计算长度,合计15个字符
123ABCabc    #从第6个字符串开始提取
123A        #从第6个字符串开始,提取4个字符

2)匹配子串删除字符串案例
cat /server/scripts/t1.sh

OLD=abcABC123ABCabc
echo ${OLD#A*C}
echo ${OLD#a*C}
echo ${OLD##a*C}
echo ${OLD%A*c}
echo ${OLD%%A*c}

sh /server/scripts/t1.sh

abcABC123ABCabc    #未能匹配到A开头的字符,原样输出
123ABCabc    #从前最短匹配成功,删除abcABC
abc            #从前最长匹配成功,删除abcABC123ABC
abcABC123    #从后最短匹配成功,删除ABCabc
abc            #从后最长匹配成功,删除ABC123ABCabc

3)匹配替换字符串案例
cat /server/scripts/t1.sh

OLD=abcABC123ABCabc
echo ${OLD/ABC/MMM}
echo ${OLD//ABC/MMM}
echo ${OLD/#abc/MMM}
echo ${OLD/%abc/MMM}

sh /server/scripts/t1.sh

abcMMM123ABCabc    #将匹配到的第一个ABC替换为MMM
abcMMM123MMMabc    #将匹配到的所有ABC替换为MMM
MMMABC123ABCabc    #将前缀匹配到的abc替换为MMM
abcABC123ABCMMM    #将后缀匹配到的abc替换为MMM
文档更新时间: 2023-08-09 08:57   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室