转自:http://blog.csdn.net/wu020708/article/details/52387473
linux (%和%%)(#和##)贪婪匹配规则
先看一个案例,提取文件名:
file_txt=”example.txt”
name=${ file_txt%.*}
echo File name is :$name
提取扩展名:
extension=${file_txt#*.}
echo Extension is : $ extension
${var%.*}含义:从$var中删除位于%右边的通配符匹配的字符串,通配符从左开始匹配;
var=${}给var赋值,则通配符就会匹配从右到左匹配到.txt,因此从$var中删除匹配结果,即留下“example”。
%和%%匹配原则:
都是从右到左匹配。
%非贪婪规则
例:var=a.b.c.d
echo ${var%.*} #输出a.b.c
%%贪婪规则:
echo ${var%%.*} #输出a
${var#*.}
删除位于#右边的的通配符,即前例中使用的*.所匹配的字符串,通配符从左到右匹配。类似%,且也有##贪婪操作符。
echo ${var#*.} #输出b.c.d
echo ${var##*.} #输出d
例:
提取域名不同部分;
假设url=www.666.com
echo ${url%.*} #www.666
echo ${url%%.*} #www