前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >三、shell变量子串

三、shell变量子串

原创
作者头像
jackxiao
发布2021-11-16 15:26:30
3990
发布2021-11-16 15:26:30
举报
文章被收录于专栏:DevOps运维DevOps运维

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)提取字符串和计算长度案例

代码语言:javascript
复制
OLD=abcABC123ABCabc
echo ${#OLD}
echo ${OLD:6}
echo ${OLD:6:4}
代码语言:javascript
复制
15			#计算长度,合计15个字符
123ABCabc	#从第6个字符串开始提取
123A		#从第6个字符串开始,提取4个字符

2)匹配子串删除字符串案例

  • cat /server/scripts/t1.sh
代码语言:javascript
复制
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
代码语言:javascript
复制
abcABC123ABCabc	#未能匹配到A开头的字符,原样输出
123ABCabc	#从前最短匹配成功,删除abcABC
abc			#从前最长匹配成功,删除abcABC123ABC
abcABC123	#从后最短匹配成功,删除ABCabc
abc			#从后最长匹配成功,删除ABC123ABCabc

3)匹配替换字符串案例

  • cat /server/scripts/t1.sh
代码语言:javascript
复制
OLD=abcABC123ABCabc
echo ${OLD/ABC/MMM}
echo ${OLD//ABC/MMM}
echo ${OLD/#abc/MMM}
echo ${OLD/%abc/MMM}
  • sh /server/scripts/t1.sh
代码语言:javascript
复制
abcMMM123ABCabc	#将匹配到的第一个ABC替换为MMM
abcMMM123MMMabc	#将匹配到的所有ABC替换为MMM
MMMABC123ABCabc	#将前缀匹配到的abc替换为MMM
abcABC123ABCMMM	#将后缀匹配到的abc替换为MMM

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.子串的语法和功能
  • 2.案例
    • 1)提取字符串和计算长度案例
      • 2)匹配子串删除字符串案例
        • 3)匹配替换字符串案例
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档