SHELL 字符串处理-$

取值/赋值

表达式含义实例
${val} 或者 $val取值val="value"
echo "$val"
>value
${val-defaultValue}如果变量没有被声明, 则返回 - 后面的值echo "${val-default value}"
>default value
${val:-defaultValue}如果变量没有被声明或者其值为空, 则返回 :- 后面的值val=""
echo "${val:-default value}"
>default value
echo "${val-default value}"
>
${val=initValue}如果变量没有被声明, 则返回 = 后面的值echo "${val=init value}"
>init value
echo "$val"
>init value
${val:=initValue}如果变量没有被声明或者其值为空, 则返回 := 后面的值val=""
echo "${val:=init value}"
>init value
echo "$val"
>init value
${val+otherValue}如果变量被声明了,则返回 + 后面的值,否则返回 nullecho "$val+other value"
>
val=""
echo "$val+other value
>other value
${val:+otherValue}如果变量被声明了并且其值不为空,则返回 :+ 后面的值,否则返回 nullecho "$val:+other value"
>
val=""
echo "$val:+other value
>
val="1"
echo "$val:+other value"
>other value
${val?ERR_MSG}如果变量没有被声明,则将 ? 后面的值输出到 stderr
${val:?ERR_MSG}如果变量没有被声明或者其值为空,则将 ? 后面的值输出到 stderr
${!valprefix*} 或者 ${!valprefix@}返回所有以 valprefix 开头的变量名称,以空格隔开val1="1" && val2="" && va3="3" && val4="4"
echo "${!val*}"
>val1 val2 val4

字符串变换

需要注意的是:下面所有的操作都不会改变变量的原始值,仅返回对应的结果

表达式含义实例
${#string}获取字符串的长度echo "${aa}"
>0
val="10"
>2
${string:position}返回从 position 开始到结束的子字符串val="12"
echo "${val:0}"
>12
echo "${val:1}"
>2
${string:position:length}返回从 position 开始,长度为 length 的子字符串val="12"
echo "${val:0:1}"
>1
${string#regpattern}从变量 string 的开头,删除最短匹配 regpattern 的子串,并将剩余的字符串返回val1="aabbaa"
echo "${val1#aa}"
>bbaa
echo "${val1#*bb}"
>aa
${string##regpattern}从变量 string 的开头, 删除最长匹配 regpattern 的子串,并将剩余的字符串返回val1="aabbaabb"
echo "${val1##aa}"
>bbaabb
echo "${val1##*bb}"
>
${string%regpattern}从变量 string 的结尾,删除最短匹配 regpattern 的子串,并返回剩余字符串val1="aabbaabb"
echo "${val1%b}"
>aabbaab
echo "${val1%aa*}"
>aabb
${string%%regpattern}从变量 string 的结尾,删除最长匹配 regpattern 的子串,并返回剩余字符串val1="aabbaabb"
echo "${val1%%b}"
>aabbaa
echo "${val1%%aa*}"
>
${string/regpattern/replacement}使用 replacement,来代替第一个匹配的 regpattern,并返回替换结果val1="aabbaabb"
echo "${val1/bb/cc}"
>aaccaabb
echo "${val1/bb*/cc}"
>aacc
${string//regpattern/replacement}使用 replacement,代替所有匹配的 regpattern,并返回结果val1="aabbaabb"
echo "${val1//bb/cc}"
>aaccaacc
echo "${val1//bb*/cc}"
>aacc
${string/#regpattern/replacement}如果 string 的前缀匹配 regpattern,那么就用 replacement 来代替匹配到的 regpattern。类似正则表达式中的 ^
${string/%regpattern/replacement}如果 string 的后缀匹配 regpattern, 那么就用 replacement 来代替匹配到的 regpattern。类似正则表达式中的 $
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值