转载 http://www.xiaoxiaozi.com/2009/06/03/753/
下面,将列出bash shell模式匹配操作符:
- ${variable#pattern}:
如果模式匹配变量取值的开头,删除最短的匹配部分,并返回其余部分
- ${variable##pattern}:
如果模式匹配变量取值的开头,删除最长的匹配部分,并返回其余部分
- ${variable%pattern}:
如果模式匹配变量取值的结尾,删除最短的匹配部分,并返回其余部分
- ${variable%%pattern}:
如果模式匹配变量取值的结尾,删除最长的匹配部分,并返回其余部分
- ${variable/pattern/string}:
${variable//pattern/string}:将variable中匹配模式的最长部分替换为string,第一种格式中,只有第一个匹配部分会被替换,而第二种模式中,所有的匹配部分均被替换。
如果模式以#开头,则必须匹配variable的开头,如果模式以%开头,则必须匹配variable的结尾
如果string为null,匹配部分将被删除,如果variable为@或*,操作被依次应用于每个位置参数并且扩展为结果列表
依次举例如下:
假如path取值为/home/simaopig/demo/log.file.name,则
${path##/*/} | log.file.name |
${path#/*/} | simaopig/demo/log.file.name |
$path | /home/simaopig/demo/log.file.name |
${path%.*} | /home/simaopig/demo/log.file |
${path%%.*} | /home/simaopig/demo/log |