bash 中## 和 %% 的功能是什么

san*_*dra -1 linux string bash

disk="/dev/sda"
local dev_node=${disk##*/}
Run Code Online (Sandbox Code Playgroud)

dev_node 被分配了“sda”。

还,

partition="/dev/sda3"
echo ${partition%%[0-9]*}
Run Code Online (Sandbox Code Playgroud)

它返回 /dev/sda 并删除 3。

我不明白上面命令中 ##*/ 和 %%[0-9]* 的功能。我尝试搜索但无法获得足够的信息。

请解释并提供与此相关的教程的任何链接。

Chr*_*aes 5

这是一本非常好的手册/教程。您的问题与什么有关:

${string##substring} 从$string 的前面删除$substring 的最长匹配。

和

${string%%substring} 从$string 的后面删除 $substring 的最长匹配。

应用于您的示例:*/从/dev/sda结果中删除最长的子字符串匹配sda