有没有好的方法来解释下面的工作原理?
~$ echo $test
en.to.tre
~$ echo ${test}
en.to.tre
~$ echo ${test%.*}
en.to
~$ echo ${test%%.*}
en
~$ echo ${test#*.}
to.tre
~$ echo ${test##*.}
tre
特别是我不明白为什么在从左/右删除/保留时必须交换 .
和 *
。
最佳答案
.*
表示“以 .
开头的子字符串”; *.
表示“以 .
结尾的子字符串”。
在第三行和第四行中,从末尾删除以 .
开始的最短/最长子字符串;在第五行和第六行中,从开头删除以 .
结尾的最短/最长子字符串。
#
、%
等后面的字符串被解释为通配模式(如文件名),而不是正则表达式,因此 .
代表其自身。
关于linux - 解释 ${test##*.} 和 ${test%%.*} 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16790345/