2013-05-28 31 views
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 

我特別不明白爲什麼.*有刪除/左/右保持時被交換。

+2

你可以選擇這個:[wooledge.org - 如何使用參數擴展?我怎樣才能得到子字符串?我怎樣才能得到沒有擴展名的文件,或只得到一個文件的擴展名?](http://mywiki.wooledge.org/BashFAQ/073) – fedorqui

+4

也許你也可以查看:http://tldp.org/LDP/abs /html/refcards.html#AEN22664 – devnull

回答

4

.*表示「substring starting with .」; *.表示「子串結束.」。 在第三行和第四行中,從最後刪除起始與.的最短/最長子字符串;在第五行和第六行中,您將從最開始刪除最短/最長的子字符串結尾.

#,%等之後的字符串被解釋爲通配模式(如文件名),而不是正則表達式,因此.代表自身。

相關問題