有没有一种好方法可以解释下面的工作原理?
~$ echo $test
en.to.tre
~$ echo ${test}
en.to.tre
~$ echo ${test%.*}
en.to
~$ echo ${test%%.*}
en
~$ echo ${test#*.}
to.tre
~$ echo ${test##*.}
tre
特别是我不明白为什么在从左/右移除/保持时必须交换.
和*
。
答案 0 :(得分:4)
.*
表示“substring 使用.
开始”; *.
表示“substring 以.
结尾”。
在第三行和第四行中,从末尾删除最短/最长子串从<{em}开始;在第五行和第六行中,您从头开始删除最短/最长子串结尾 {/ 1}}。
.
,.
等之后的字符串被解释为通配模式(如文件名),而不是正则表达式,因此#
代表自己。