为什么这个 Bash 字符串替换不起作用?

Why isn't this Bash string substitution working?

我正在尝试在 bash 中进行字符串替换以转义版本号中的点,最终传递给 grep。当我运行

echo ${3.9.1//./\.}

预期输出为 3\.9\.1。我收到 bad substitution 错误。我不明白这怎么不正确。

把你的字符串放在一个变量中然后你可以使用Parameter Expansion:

s="3.9.1"
echo "${s//./\.}"

输出:

3\.9\.1