我正在从 github 阅读 shell 脚本:脚本
它有两行代码让我感到困惑。我以前从未见过像这样在 bash 中使用 ##。谁能向我解释一下,它是如何工作的?谢谢。
branch_name=$(git symbolic-ref -q HEAD)
branch_name=${branch_name##refs/heads/}
注意:第一行产生类似 'refs/heads/master' 的内容,下一行删除前导 refs/heads 使 branch_name 成为 master。
从bash(1)
手册页,EXPANSION部分,Parameter Expansion小节:
${parameter#word}
${parameter##word}
Remove matching prefix pattern. The word is expanded to produce
a pattern just as in pathname expansion. If the pattern matches
the beginning of the value of parameter, then the result of the
expansion is the expanded value of parameter with the shortest
matching pattern (the ``#'' case) or the longest matching pat‐
tern (the ``##'' case) deleted.
当然,也可以在手册中找到(但它似乎不支持链接到这个确切的文本;在页面上搜索##
)。