关于BASH中变量内容的删除、取代与替换

变量内容的删除:

14:54:27-root-~# path=${PATH}
14:54:38-root-~# echo $path
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
14:54:49-root-~# echo ${path#/*:}
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
14:55:55-root-~# echo $path
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
14:56:53-root-~# echo ${path##/*:}
/root/bin

如上所示,#代表从前向后删除,删除的是/到:的最短内容,而若是##则是删除/到:的最长内容,其中*是通配符

而要是从后往前删除,则用%或%%

变量的取代:

15:10:17-root-~# echo $path
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
15:10:25-root-~# echo ${path/bin/BIN}
/usr/lib64/qt-3.3/BIN:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
15:11:04-root-~# echo ${path//bin/BIN}
/usr/lib64/qt-3.3/BIN:/usr/local/sBIN:/usr/local/BIN:/usr/sBIN:/usr/BIN:/root/BIN

如上所示,将path变量中的sbin替换为SBIN,用/是将第一个旧字符串替换为新字符串,而//则是将所有的旧字符串给予替换。
变量的测试和替换:

15:22:02-root-~# echo $myname

15:22:14-root-~# myname=""
16:13:57-root-~# myname=${myname-root}
16:14:20-root-~# echo $myname

16:14:23-root-~# myname=${myname:-root}
16:14:32-root-~# echo $myname
root
16:14:34-root-~#

采用myname=${myname-root}时,若变量已经存在,则不会替换,而myname=${myname:-root}则全然不管的去替换

 

转载于:https://www.cnblogs.com/itlxj/p/5033220.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值