【问题标题】:Why isn't this Bash string substitution working?为什么这个 Bash 字符串替换不起作用?
【发布时间】:2022-01-26 15:47:32
【问题描述】:

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

echo ${3.9.1//./\\.}

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

【问题讨论】:

  • 3.9.1 不是有效的参数 namebash 不允许对原始字符串进行参数扩展操作,只允许对参数扩展的结果进行操作。 (另一方面,zsh 确实如此。)

标签: bash parameter-expansion


【解决方案1】:

将你的字符串放入一个变量中,然后你就可以使用Parameter Expansion:

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

输出:

3\.9\.1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-04
    • 2012-11-30
    • 1970-01-01
    • 2012-01-18
    • 2021-04-30
    • 2017-05-11
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多