disk="/dev/sda"
local dev_node=${disk##*/}
dev_node分配了" sda"。
此外,
partition="/dev/sda3"
echo ${partition%%[0-9]*}
返回/ dev / sda并删除3.
我在上面的命令中没有理解## * /和%% [0-9] *的功能。我尝试搜索但无法获得足够的信息。
请解释并提供与此相关的教程的任何链接。
答案 0 :(得分:3)
这是一个非常好的manual / tutorial。您的问题涉及什么:
$ {string ## substring}从前面中删除$ substring的最长匹配 $字符串。
和
$ {string %% substring}从返回中删除$ substring的最长匹配 $字符串。
应用于您的示例:从*/
中删除与/dev/sda
匹配的最长子字符串会导致sda
答案 1 :(得分:1)
此过程通常被描述为parameter expansion
。
在您的情况下,##
和%%
是提取字符串部分的运算符。
##
从给定字符串的开头删除已定义子字符串的最长匹配。
%%
执行相同操作,但它从字符串后面开始。
好的指南是here。