2013-01-24 37 views
1

代碼:

#! /bin/bash 

ALL="hello.log" 
echo ${ALL%.*} 

我知道了 「你好」 將顯示,但是如何理解「$ {所有%*}」? 謝謝。

回答

2

{ }用於展開,並且%.*用於從回顯中刪除ALL變量中包含的所有字符。

+0

@lxgeek,具體而言,從* last *點向前刪除字符。如果你想刪除* first *和後續字符,使用'$ {ALL %%。*}'。在「shell參數擴展」下的bash手冊中有記錄。 –

+0

@glennjackman是的,忘了指定它。好點子! :) – DonCallisto

0

這是一個參數擴展。它在手冊的相應章節中有記錄,您可以通過輸入man bash來查看。搜索${parameter%word}

2

讓我們打破這一點;

${ALL%.*} 
  • ${ } - 使用Parameter Expansion
  • ALL - 變量名稱。
  • % - 從字符串(RHS)(非貪婪)的末尾開始刪除。
  • .* - 模式匹配表達式;一個字面點隨後是任何字符。