解释$ {test ## *。}和$ {test %%。*}的工作原理?

时间:2013-05-28 10:59:20

标签: linux bash

有没有一种好方法可以解释下面的工作原理?

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

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

1 个答案:

答案 0 :(得分:4)

.*表示“substring 使用.开始”; *.表示“substring .结尾”。 在第三行和第四行中,从末尾删除最短/最长子串从<{em}开始;在第五行和第六行中,您从头开始删除最短/最长子串结尾 {/ 1}}。

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