美文网首页
Shell 字符串操作

Shell 字符串操作

作者: lq_ios | 来源:发表于2022-06-22 10:29 被阅读0次

    获取字符串的长度

    ${#变量名} #如果变量未被赋值或者值是空字符则返回0 
    
    #!/bin/bash
    
    str='this is string' #使用带引号不会将${}展开而是直接输出,使用双引号会展开,如'this is string ${name}'会直接输出 this is string ${name} 
    echo ${#str} # 14
    

    字符串的截取

    ${变量名:数值} # 要展开的是"变量名"代表的字符串从"数值"所指向的位置开始到末尾位置,数值是从0开始计数的,这个"数值"可以为负数,但是在不同shell版本上是有差异的,比如我的shell (5.1) 负数是无效的
    ${变量名:数值:长度} #从"数值"处开始截取"长度"个字符串
    
    #!/bin/bash
    
    str='this is string'
    echo ${str:4}  # is string
    echo ${str:5:2} # is
    

    使用匹配模式进行截取

    ${变量名#模式}  #从左向右,将(最短)匹配部分截取
    ${变量名##模式} #从左向右,将(最长)匹配部分截取
    ${变量名%模式}  #从右向左,将(最短)匹配部分截取
    ${变量名%%模式} #从右向左,将(最长)匹配部分截取
    
    #!/bin/bash
    
    path=home.tag.gz
    echo ${path#*.}  # tag.gz
    echo ${path##*.} #gz
    echo ${path%.*}  # home.tag
    echo ${path%%.*} #home
    

    字符串替换

    ${变量名/模式/替换的字符串}  #只会替换第一个匹配的
    ${变量名//模式/替换的字符串} #替换第所有匹配的
    
    #!/bin/bash
    path=home.tag.gz
    echo ${path/./_}   # home_tag.gz 
    echo ${path//./_}  # home_tag_gz 
    echo ${path/.*/.txt}  # home.txt
    file=index.html
    echo ${file/%.html/.txt} # index.txt
    

    相关文章

      网友评论

          本文标题:Shell 字符串操作

          本文链接:https://www.haomeiwen.com/subject/csipvrtx.html