加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Shell_Shell 脚本中字符串的相关操作

发布时间:2020-12-15 19:14:24 所属栏目:安全 来源:网络整理
导读:在我们的shell 编程中,一个必不可少的操作就是针对于字符串的操作, 重要有字符串替换,计算字符串长度 等等。。。 原文地址: https://blog.csdn.net/github_33736971/article/details/53980123 下面对这些操作进行一个总结。 $ {#string} 返回 $ string的

在我们的shell 编程中,一个必不可少的操作就是针对于字符串的操作,

重要有字符串替换,计算字符串长度 等等。。。

原文地址:

https://blog.csdn.net/github_33736971/article/details/53980123


下面对这些操作进行一个总结。


${#string}
返回$string的长度

${string:position}
$string中,从$position位置之后开始提取子串

${string:position:length}
$string中,从$position位置之后开始提取$length长度的子串

[root@localhost SHELL]# NAME="ni hao,ming tian"
[root@localhost SHELL]# echo $NAME
ni hao,ming tian
[root@localhost SHELL]# echo ${NAME}
ni hao,ming tian
[root@localhost SHELL]# echo ${#NAME}
17
[root@localhost SHELL]# echo ${NAME:3}
hao,ming tian
[root@localhost SHELL]# echo ${NAME:3:6}
hao,m
[root@localhost SHELL]# 

${string#substring}
从变量$string开头开始删除最短匹配$substring子串

${string##substring}
从变量$string开头开始删除最长匹配$sunstring子串

[root@localhost SHELL]# NAME=abcABC123ABCabcde
[root@localhost SHELL]# echo $NAME
abcABC123ABCabcde
[root@localhost SHELL]# echo ${NAME#a*C}
123ABCabcde
[root@localhost SHELL]# echo ${NAME##a*C}
abcde
[root@localhost SHELL]# 
  • ${string%substring}
    从变量$string结尾开始删除最短匹配$substring子串

    ${string%%substring}
    从变量$string结尾开始删除最长匹配$substring子串

    [root@localhost SHELL]# NAME=abcABC123ABCabc
    [root@localhost SHELL]# echo $NAME
    abcABC123ABCabc
    [root@localhost SHELL]# echo ${NAME%%a*c}
    
    [root@localhost SHELL]# echo ${NAME%a*c}
    abcABC123ABC
    [root@localhost SHELL]# echo ${NAME#b*c}
    abcABC123ABCabc
    [root@localhost SHELL]# echo ${NAME#bc}
    abcABC123ABCabc
    [root@localhost SHELL]# echo ${NAME%bc}
    abcABC123ABCa
    [root@localhost SHELL]# echo ${NAME%%bc}
    abcABC123ABCa
    [root@localhost SHELL]# echo ${NAME%C*c}
    abcABC123AB
    [root@localhost SHELL]# echo ${NAME%%C*c}
    abcAB
    [root@localhost SHELL]# echo ${NAME%%C*b}
    abcABC123ABCabc
    [root@localhost SHELL]# echo ${NAME}
    abcABC123ABCabc
    [root@localhost SHELL]# 
    • 注意:在进行#或##匹配时,$string的首字符必须是被删除子串$substring的第一个字符,不然无法匹配删除;
      在进行%或者%%匹配时,$string的最后一个字符必须是被删除子串$substring的最后一个字符,不然无法进行删除操作;

      ${parameter/parttern/string}
      用string来替换第一个匹配的pattern

      ${parameter/#parttern/string}
      从开头匹配parameter变量中的pattern,匹配上后就用string来替换匹配的pattern

      ${parameter/%pattern/string}
      从结尾开始匹配parameter变量中的pattern,匹配上后就用string替换匹配的pattern

      ${parameter//pattern/string}
      用string来替换parameter变量中所有匹配的pattern

      [root@localhost SHELL]# NAME="I am a student student"
      [root@localhost SHELL]# echo ${NAME//student/teacher}
      I am a teacher teacher
      [root@localhost SHELL]# echo ${NAME/#student/teacher}
      I am a student student
      [root@localhost SHELL]# echo ${NAME/%student/teacher}
      I am a student teacher
      [root@localhost SHELL]# echo ${NAME/%I am /teacher}
      I am a student student
      [root@localhost SHELL]# echo ${NAME/#I am /teacher}
      teachera student student
      [root@localhost SHELL]# echo ${NAME/#I am a/teacher}
      teacher student student
      [root@localhost SHELL]# echo $NAME
      I am a student student
      [root@localhost SHELL]# 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读