鸟哥这本书的第十一章 认识与学习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
最长的删除,删除结果。