【shell】变量内容的删除和替换

【背景】

linux提供了一些可以直接对变量进行操作的符号。通过这些符号,变量中的部分内容可以被删除、替换等,使用它们可以减少代码的行数并提高可读性。


【涉及符号】

${var#pattern}  从变量头部开始匹配模式,将符合的最短数据删除
${var##pattern} 从变量头部开始匹配模式,将符合的最长数据删除
${var%pattern}  从变量尾部开始匹配模式,将符合的最短数据删除
${var%%pattern} 从变量尾部开始匹配模式,将符合的最长数据删除
${var/oldPattern/newPattern}  将第一个符合旧模式的数据替换为新模式
${var//oldPattern/newPattern} 将全部符合旧模式的数据替换为新模式

【例子】

1.输出文件的后缀

例如要判断文件的后缀名

var1=me.txt
echo ${var1#*.}
txt

用#会匹配上第一个点和之前的内容,删除掉之后就获得了后缀名txt。

var=me.pdf.txt
echo ${var##*.}
txt
假如文件名中本身含有点就会让上一种写法失效,此时应该用##来匹配最长数据。


2.输出文件名

类似上面的例子,这次是要输出文件名

echo ${var1%%.*}
me
可见,%删除了从右边起第一个点及其右边的字符,剩下的就是文件名了。
echo ${var%.*}
me.pdf
假如文件名中本身含有点也是会让上一种写法失效,此时用%来做最短匹配就行了。

3.替换部分字符

var=hello123hello123
echo ${var/123/456}
hello456hello123
echo ${var//123/456}
hello456hello456

可以看到第一个操作将首个123替换为456,第二个操作将所有123都变为456。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值