linux ${}表达式详解

linux ${}表达式详解


1、参数替换

1、${var_name}等价于$var_name(通常用这种简写方式)
2、$(var:-default) 和$(var-default)
      $(var:-default)   当var为空或未定义时整个表达式的值为default
      $(var-default)    当且仅当var未定义时整个表达式的值为default
3、$(var:=default) 和$(var=default)
      $(var:=default)   当var为空或未定义时整个表达式的值为default,并且将var的值设置为default
      $(var=default)    当且仅当var未定义时整个表达式的值为default,并且将var的值设置为default
4、$(var:?default) 和$(var?message)
      $(var:?message)   当var为空或未定义时,打印错误信息,信息内容为message表示的值
      $(var?message)    当且仅当var未定义时,打印错误信息,信息内容为message表示的值
5、$(var:+default) 和$(var+default)
      $(var:+default)   当var已定义且不为空时整个表达式的值为default

      $(var+default)   当var已定义时真个表达式的值为default(不管var是否是空)

2、字符串截取

1、${str:offest} 从下标offset(含)开始截取到末尾的子串

2、${str:offest:length} 从下表offset(含)开始向后截取长度为length的子串,长度超出不报错

3、${str:offest:index} 此处的index为负数,最后一个字符为-1,依次往前为-2,-3。此表达式截取offset(含)到index(不含)

     之间的子串,当index表示的位置在offset左边时会报错

3、变量匹配

1、${!prefix*}、${!prefix@} 将带有前缀为prefix的变量名打印出来

4、数组操作

1、${!name[@]}、${!name[*]} 将数组name的所有下标返回,如果变量name不是数组则返回0,不存在则空

2、${name[@]}、${name[*]}将数组name的所有元素返回,如果变量name不是数组则返回name的值,不存在则空

3、${name[index]} 将数组name的index处的元素返回,如果变量name不是数组且index为0时返回name的值,变量或索

      index处的元素不存在则返回空

5、正则匹配替换

1、${parameter#word}、${parameter##word}

  从头开始扫描word,将匹配word正则表达的字符过滤掉
  #为最短匹配,##为最长匹配

2、${parameter%word}、${parameter%%word}

  从尾开始扫描word,将匹配word正则表达式的字符过滤掉
  %为最短匹配,%%为最长匹配

3、${parameter/pattern/string}、${parameter//pattern/string}

  /表示只替换一次
  //表示全部替换


  • 6
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值