Bash中的百分比符号,它用于什么?

Sen*_*ran 15 bash

我有一个结尾的文件名,.zip我只想要没有zip的文件名.在这里,我在bash中找到了一个技巧.

$f="05 - Means-End Analysis Videos.zip"
$echo "${f%*.zip}"
05 - Means-End Analysis Videos
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?怎么%*.zip删除我的扩展名?

pfn*_*sel 22

从头开始删除stringin 的最短匹配$var:

${var#string}
Run Code Online (Sandbox Code Playgroud)

从头开始删除stringin 的最长匹配$var:

${var##string}
Run Code Online (Sandbox Code Playgroud)

从最后删除stringin 的最短匹配$var:

${var%string}
Run Code Online (Sandbox Code Playgroud)

从最后删除stringin 的最长匹配$var:

${var%%string}
Run Code Online (Sandbox Code Playgroud)

尝试:

var=foobarbar
echo "${var%b*r}"
> foobar
echo "${var%%b*r}"
> foo
Run Code Online (Sandbox Code Playgroud)

  • 这个答案很好,尽管任何有兴趣的读者来到这里可能想将它与[这个答案](/sf/answers/1787585481/)进行比较(我想说这是稍微更详细的)。 (4认同)