實例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