2015-07-02 52 views
-3
disk="/dev/sda" 
local dev_node=${disk##*/} 

dev_node分配有「sda」。bash中##和%%的功能是什麼

此外,

partition="/dev/sda3" 
echo ${partition%%[0-9]*} 

它返回的/ dev/SDA和除去3.

我不理解的##的功能* /和%% [0-9] *在上述命令。我試圖搜索,但無法獲得足夠的信息。

請解釋並提供與此相關的教程的任何鏈接。

+1

'man bash' then'/ ##' –

回答

1

這是一個非常好的manual/tutorial。什麼涉及您的問題:

$ {串##串}從 $字符串刪除$子的最長匹配。

$ {字符串%%子}刪除從的 $字符串$子的最長匹配。

施加到你的例子:在sda

1

此過程通常被描述爲parameter expansion除去最長子串匹配*//dev/sda結果。

在你的情況下,##%%是提取部分字符串的運算符。

##刪除從給定字符串開始處開始的已定義子串的最長匹配。

%%也是如此,除了從字符串的後面開始。

好的指導是here