鸟哥释疑——关于变量的删除

鸟哥这本书的第十一章 认识与学习Bash 2.8节 变量内容的删除、取代与替换

这一节中有两个稍微出彩的地方:
note1:*代替0个或多个字符
note2:#的最短和##的最长
另外有一点要记住,左边是#,右边则是%


note1:
文中命令行:
[root@www ~]# path=${PATH}
[root@www ~]# echo $path
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@www ~]# echo ${path#/*kerberos/bin:}
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

在删除/usr/kerberos/bin:的同时,也删除了/usr/kerberos/sbin:,这是因为/*/kerberos/bin:这段中,*可以代表一个或多个字符,在这里,*=usr/kerberos/bin:/usr/,所以才会出现这个删除结果。


note2:
文中的例子:
[root@www ~]# echo $path
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@www ~]# echo ${path#/*:}
/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
这里删除了最短的部分:/usr/kerberos/sbin:,其中*=划横线部分。
[root@www ~]# echo ${path##/*:}
/root/bin
这里删除了剩余的最长的部分:/usr/kekrberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:,其中*=划横线部分。

我自己再来一个例子吧:

[root@www Desktop]# test1=myname,mynum,my1name,my1num
给变量test1一个值

[root@www Desktop]# test2=${test1#*,}从左侧开始删除。并将结果赋给test2

[root@www Desktop]# echo $test2
mynum,my1name,my1num
[root@www Desktop]# echo ${test2##*,}
my1num

最长的删除,删除结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值