首页
学习
活动
专区
工具
TVP
发布

linux${}表达式详解

1、参数替换

1、$等价于$var_name

2、$(var:-default) 和$(var-default)

$(var:-default) 当var为空或未定义时整个表达式的值为default

$(var-default) 当且仅当var未定义时整个表达式的值为default

注解:由于为空,故赋值为"example"

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、$ 从下标offset(含)开始截取到末尾的子串

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

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

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

3、变量匹配

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

4、数组操作

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

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

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

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

4、${#name[*]}、${#name[@]} 将数组name的长度返回

5、正则匹配替换

1、$、$

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

#为最短匹配,##为最长匹配

2、$、$

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

%为最短匹配,%%为最长匹配

3、$、$

/表示只替换一次

//表示全部替换

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181010G15RPA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券