多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# **一、shell变量子串** ## **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 ```