参见 参数扩展 在
man bash:
${parameter#word} ${parameter##word}删除匹配的前缀模式。单词被扩展以产生一个模式,就像路径名扩展一样。如果模式与参数值的开头匹配,则扩展的结果是删除了最短匹配模式(
#情况)或最长匹配模式(##情况)的参数的扩展值。如果parameter为@或,则将模式去除操作依次应用于每个位置参数,并且扩展为结果列表。如果parameter是用@或下标的数组变量,则将模式删除操作依次应用于数组的每个成员,并且扩展为结果列表。${parameter%word} ${parameter%%word}删除匹配的后缀模式。单词被扩展以产生一个模式,就像路径名扩展一样。如果模式与参数的扩展值的结尾部分匹配,则扩展的结果是具有最短匹配模式(
%情况)或最长匹配模式(%%情况)删除。如果parameter为@或,则将模式去除操作依次应用于每个位置参数,并且扩展为结果列表。如果parameter是用@或下标的数组变量,则将模式删除操作依次应用于数组的每个成员,并且扩展名是结果列表。
简而言之,
#从左侧删除图案,
%从右侧删除图案,将符号加倍会使匹配的贪婪。(助记符:在大多数键盘上
#位于左侧
%)。



