$ {test ## *。}和$ {test %%。*}是如何工作的解释?

有没有一个很好的方法来解释下面的工作?

~$ echo $test en.to.tre ~$ echo ${test} en.to.tre ~$ echo ${test%.*} en.to ~$ echo ${test%%.*} en ~$ echo ${test#*.} to.tre ~$ echo ${test##*.} tre 

特别是我不明白为什么.*必须在从左/右移除/保持时交换。

.*表示“以… 开头的子串”。 *. 意思是“ 以…结尾的子串”。 在第三行和第四行中,删除以最短/最长的子字符串. 从最后; 在第五和第六行中,删除最后/最长的子字符串. 从一开始就。

#%等之后的字符串被解释为通配模式(如文件名),而不是正则表达式. 代表自己。