${parameter/#pattern/string} 中的散列有什么作用?

Cas*_*ash 4 bash string

我在这篇文章中看到了以下替换:

${PWD/#$HOME/~}
Run Code Online (Sandbox Code Playgroud)

与这个相比如何?

${PWD/$HOME/~}
Run Code Online (Sandbox Code Playgroud)

两者似乎是一样的。我不知道为什么包含哈希值。

Hau*_*ing 6

man bash, 解释${parameter/pattern/string}

如果模式以# 开头,则它必须匹配参数扩展值的开头。如果模式以 % 开头,则它必须匹配参数扩展值的末尾。

> var=abcd
> echo "${var/bc/_}"
a_d
> echo "${var/#bc/_}"
abcd
Run Code Online (Sandbox Code Playgroud)