实例1ide
[root@localhost ~]# file_jpg="sample.jpg"spa
[root@localhost ~]# name=${file_jpg%.*}字符串
[root@localhost ~]# echo File name : $nameget
File name : sampleit
为了从“名称.扩展名”这种格式的文件名中提取名称,咱们使用了%操做符class
${VAR%.*}的含义是:变量
从$VARIABLE中删除位于%右侧的通配符(在实例中是.*)所匹配的字符串。通配符从右向左进行匹配。
扩展
给VAR复制,VAR=sample.jpg。那么,通配符从右向左就会匹配到.jpg,所以,从$VAR中删除匹配结果,就会获得输出"sample"。file
%属于非贪婪(non-greedy)操做。它从右道左找出匹配通配符的最短结果。还有另外一我的操做符%%,与%类似,但行为模式确实贪婪的(greedy),这意味着它会匹配符号条件的最长的字符串。im
实例1.1
[root@localhost ~]# VAR=zhaonimei.nimei.mei
[root@localhost ~]# echo ${VAR%.*}
zhaonimei.nimei
[root@localhost ~]# echo ${VAR%%.*}
zhaonimei
————————————————————————————————————————————
实例2
[root@localhost ~]# file_jpg="sample.jpg"
[root@localhost ~]# name=${file_jpg#*.}
[root@localhost ~]# echo File name : $name
File name : jpg
#操做符从文件名中提取扩展名。这个操做符与%相似,不过求值方向是从左向右。 ${VAR#*.}的含义是:
从$VARIABLE中删除位于#右侧的通配符(即在实例中使用的*.)所匹配的字符串。通配符从左向右进行匹配。
实例2.1
[root@localhost ~]# VAR=zhaonimei.nimei.mei
[root@localhost ~]# echo ${VAR##*.}
mei