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

来源:互联网 发布:淘宝同城的怎么搜索 编辑:程序博客网 时间:2024/05/29 17:01
鸟哥这本书的第十一章 认识与学习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

最长的删除,删除结果。
0 0
原创粉丝点击