Linux shell的${}用法

获取字符串长度

${#varname}

[root@localhost ~]# var=123456
[root@localhost ~]# echo ${#var}
6

字符串切片

${var:offset}
${var:offset:length}
截取从offset个字符开始,向后length个字符

[root@localhost ~]# echo ${var:0:2}
12
[root@localhost ~]# echo ${var:2:3}
345

截取最后一个字符:

[root@localhost ~]# echo ${var:(-1)}
6

截取最后三个字符:

[root@localhost ~]# echo ${var:(-3)}
456

截取从倒数第三个字符后的两个字符:

[root@localhost ~]# echo ${var:(-3):2}
45

注意字符的顺序是从零开始的

替换字符串

格式:${varname/pattern/string}表示匹配第一个字符
[root@localhost ~]# animal='black dog'
[root@localhost ~]# echo ${animal/black/green}
green dog
*pattern可以使用正则表达式

[root@localhost ~]# char=123aaabbbccc
[root@localhost ~]# echo ${char/a*/4}
1234
${varname/pattern/string/}表示匹配所有字符

字符串截取

格式:
${varname#word} 表示删除匹配前缀
${varname##word}
${varname%word} 表示删除匹配后缀
${varname%%word}

% 去掉右边, 为最短匹配模式, %% 最长匹配模式
# 去掉左边,最短匹配模式,## 最长匹配模式

[root@localhost ~]# url="https://www.cnblogs.com/hzdwwzz"
[root@localhost ~]# echo ${url#*//}
www.cnblogs.com/hzdwwzz
以//为分隔符去除字符串

[root@localhost ~]# echo ${url##*/}
hzdwwzz

以/为分隔符去除所有前缀

[root@localhost ~]# echo ${url%%//*}
https:
[root@localhost ~]# echo ${url%/*}
https://www.cnblogs.com

变量状态赋值

${VAR:-string} 如果 VAR 变量为空则返回 string
${VAR:+string} 如果 VAR 变量不为空则返回 string
${VAR:=string} 如果 VAR 变量为空则重新赋值 VAR 变量值为 string
${VAR:?string} 如果 VAR 变量为空则将 string 输出到 stderr

转载于:https://www.cnblogs.com/hzdwwzz/p/9733690.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值