2

有没有很好的方法来解释下面的工作原理?

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

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

4

1 回答 1

4

.*表示“以”开头.的子字符串;*.表示“以”结尾.的子字符串。在第三和第四行中,从末尾开始删除最短/最长的子字符串;.在第五行和第六行中,您从开头删除了以 结尾的最短/最长子字符串。.

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

于 2013-05-28T11:21:07.413 回答