Bash shell 字符串操作符详解

本文详细介绍一下Bash shell字符串操作的有关内容。

 

首先需要明白的一点是我们通常所用的变量替代 $varname 其实是 ${varname}的一种简写形式。

其次,需要知道字符串操作的核心思想是:Bash shell字符串操作是通过在变量名'varname'和闭花括号'}'之间插入操作符来完成的。

 

在明确了以上2点以后,我们就可以开始学习Bash shell字符串操作的相关内容了。本文分为四部分进行介绍。

  • 替换操作符
    • ${varname:-word}
      • 含义:如果变量varname存在且非空, 返回变量的值;否则返回值word。
      • 目的:如果变量未定义,则返回默认值word。
      • 举例:如果变量count未定义,则:${count:-0}的值为0.
          
    • ${varname:=word}
      • 含义:如果变量varname存在且非空,返回变量的值;否则将变量的值设为值word后返回变量的值。
      • 目的:如果变量varname未定义,则将其设置为默认值word.
      • 举例:如果变量count未定义,则将其设为0
         
    • ${varname:+word}
      • 含义:如果变量varname存在且非空,返回值word;否则返回null。
      • 目的:测试变量varname是否存在。
      • 举例:如果变量count存在,返回1(表示存在)
    • ${varname:?message}
      • 含义:如果变量varname存在且非空,返回变量的值;否则打印信息"varname: message";如果message没有指定,则显示parameter null or not set。
      • 目的:如果变量未定义,则打印错误信息。
      • 举例:如果变量count未定义,打印消息"count: undefined!
    • ${varname:offset:length}
      • 含义:返回变量varname的子字符串,开始位置为offset,长度为length。注意索引开始位置为0。
      • 目的:返回子字符串。
      • 举例:如果变量count的值为 frogfootman,则:
  • 模式匹配操作符
    • ${varname#pattern}
      • 含义:如果pattern匹配变量varname值的开始部分,删除最小 的匹配部分并且返回变量剩余部分内容。
      • 举例:
         
    • ${varname##pattern}
      • 含义:如果pattern匹配变量varname值的开始部分,删除最大 的匹配部分并且返回变量剩余部分内容。
      • 举例:
    • ${varname%pattern}
      • 含义:如果pattern匹配变量varname值的结尾部分,删除最小 的匹配部分并且返回变量剩余部分内容。
      • 举例:
    • ${varname%%pattern}
      • 含义:如果pattern匹配变量varname值的结尾部分,删除最大 的匹配部分并且返回变量剩余部分内容。
      • 举例:
    • ${varname/pattern/string}
      • 含义:用值string替换varname中模式pattern可以匹配到的最大部分。仅替换第一次匹配。
      • 举例:
    • ${varname//pattern/string}
      • 含义:用值string替换varname中模式pattern可以匹配到的最大部分。全局匹配。
      • 举例:
  • 变量长度
    • ${#varname}
      •  含义:获取变量varname值长度。
      • 举例:
  • 扩展模式匹配操作府
    • 注意:使用扩展模式匹配操作符时,shopt extglob必须为on .
    • *(patternlist)
      • 含义:匹配patternlist中0个或多个pattern
      • 举例:
    • +(patternlist)
      • 含义:匹配patternlist中1个或多个pattern
      • 举例:
    • ?(patternlist)
      • 含义:匹配patternlist中0各或1个patter
    • @(patternlist)
      • 含义:匹配patterlist中的1个pattern.
      • 举例:
    • !(patternlist)
      • 含义:匹配patterlist中所有pattern之外的pattern。
      • 举例:

如对本文内容有任何问题,欢迎随时联系作者。

wang.caiqi@hotmail.com

谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值