shell_变量的删除替换与字符串的处理


  • 变量

    功能写法描述
    删除${变量#匹配规则}从头开始匹配,最短删除
    ${变量##匹配规则}从头开始匹配,最长删除
    ${变量%匹配规则}从尾开始匹配,最短删除
    ${变量%%匹配规则}从尾开始匹配,最长删除
    替换${变量/旧字符串/新字符串}替换匹配到的第一个旧字符串为新
    ${变量//旧字符串/新字符串}替换匹配到的全部旧字符串为新

    举例:

    [root@ora01 ~]\# echo $JAVA_HOME						#设置一个测试变量
    /usr/java/jdk/jdk1.8.0_144
    
    <<删除>>-----------------------------------------------------------------
    [root@ora01 ~]\# echo ${JAVA_HOME#*jdk}
    /jdk1.8.0_144
    [root@ora01 ~]\# echo ${JAVA_HOME##*jdk}
    1.8.0_144
    [root@ora01 ~]\# echo ${JAVA_HOME%jdk*}
    /usr/java/jdk/
    [root@ora01 ~]\# echo ${JAVA_HOME%%jdk*}
    /usr/java/
    
    <<替换>>----------------------------------------------------------------
    [root@ora01 ~]\# echo ${JAVA_HOME/jdk/JDK}
    /usr/java/JDK/jdk1.8.0_144
    [root@ora01 ~]\# echo ${JAVA_HOME//jdk/JDK}
    /usr/java/JDK/JDK1.8.0_144
    

  • 字符串处理

    功能写法描述
    获取字符串长度${#变量名}
    expr length "$变量名" (变量含空格,需加双引号)
    获取子串在字符串中的索引位置expr index "$string" $substring若substring值在string变量中不存在,则进行每个字符的全局匹配,返回第一个匹配的字符索引
    计算子串长度expr match "$string" $substring 注意:substring 只能从字符串的开头匹配 直接匹配后面会获取不到
    抽取子串${string:position}从string的position开始【下标从0开始】
    ${string:position:length}从position开始,匹配长度为length
    ${string: -position}从右边开始匹配
    ${string:(position)}从左边开始匹配
    expr substr $string $position $length从position开始,匹配长度为length

    举例

    <<设置一个测试变量>>-----------------------------------------------------------
    [root@ora01 ~]\# echo $JAVA_HOME
    /usr/java/jdk/jdk1.8.0_144
    
    <<获取字符串长度>>-------------------------------------------------------------
    [root@ora01 ~]\# echo ${#JAVA_HOME}
    26
    [root@ora01 ~]\# expr length "$JAVA_HOME"
    26
    
    <<获取子串在字符串中的索引位置>>-----------------------------------------------
    [root@ora01 ~]\# echo $des_str
    May the Force be with you.
    [root@ora01 ~]\# expr index "$des_str" the
    5
    [root@ora01 ~]\# expr index "$des_str" FLP
    9
    
    <<计算子串长度>>--------------------------------------------------------------
    [root@ora01 ~]\# echo $des_str
    May the Force be with you.
    [root@ora01 ~]\# expr match "$des_str" May
    3
    [root@ora01 ~]\# expr match "$des_str" you #注意:substring 只能从字符串的开头匹配 直接匹配后面会获取不到
    0
    
    <<抽取子串>>------------------------------------------------------------------
    [root@ora01 ~]\# echo ${JAVA_HOME:3}
    r/java/jdk/jdk1.8.0_144
    [root@ora01 ~]\# echo ${JAVA_HOME:3:5}
    r/jav
    [root@ora01 ~]\# echo ${JAVA_HOME: -3}    		#注意:符号前面必须加空格,否则无效。
    144
    [root@ora01 ~]\# echo ${JAVA_HOME:(3)}
    r/java/jdk/jdk1.8.0_144
    [root@ora01 ~]\# expr substr $JAVA_HOME 3 5		#注意:expr语句的下标是从0开始。
    sr/ja
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值