Linux ${}表达式详解

参数替换

  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是否是空)
    

字符串截取

  1. ${str:offest} 从下标offset(含)开始截取到末尾的子串
  2. ${str:offest:length} 从下表offset(含)开始向后截取长度为length的子串,长度超出不报错
  3. ${str:offest:index} 此处的index为负数,最后一个字符为-1,依次往前为-2,-3。此表达式截取offset(含)到index(不含)之间的子串,当index表示的位置在offset左边时会报错

变量匹配

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

数组操作

1.${!name[@]}、${!name[*]} 将数组name的所有下标返回,如果变量name不是数组则返回0,不存在则空
2.${name[@]}、${name[*]}将数组name的所有元素返回,如果变量name不是数组则返回name的值,不存在则空
3.${name[index]} 将数组name的index处的元素返回,如果变量name不是数组且index为0时返回name的值,变量或索引index处的元素不存在则返回空

正则匹配替换

1、${parameter#word}、${parameter##word}
  从头开始扫描word,将匹配word正则表达的字符过滤掉
  #为最短匹配,##为最长匹配
2、${parameter%word}、${parameter%%word}
  从尾开始扫描word,将匹配word正则表达式的字符过滤掉
  %为最短匹配,%%为最长匹配
3、${parameter/pattern/string}、${parameter//pattern/string}

/表示只替换一次
//表示全部替换
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值