【问题标题】:bash variable in string substitution字符串替换中的bash变量
【发布时间】:2016-09-29 13:18:43
【问题描述】:

我正在尝试在 bash 中进行字符串替换,希望更好地理解它。

我制作了一个这样的成功案例:

a=abc_de_f
var=$a
echo ${var//_/-}

输出是abc-de-f。这行得通。

但是,以下脚本失败:

a=abc_de_f
echo ${$a//_/-}

错误消息是${$a//_/-}: bad substitution。 这似乎与我们如何使用变量进行替换有关。为什么这会失败?在这种情况下,bash 如何处理变量?

另外,在 bash 字符串替换中处理转义字符的最佳做法是什么?

【问题讨论】:

    标签: linux bash shell unix


    【解决方案1】:

    在第二种情况下,您不需要第二个$,因为a 是字符串。

    a=abc_de_f
    echo ${a//_/-}
    

    如果要添加indirection的级别,可以在变量前使用!,如

    a=abc_de_f
    b=a
    echo ${b//_/-}
    

    将输出a,而

    echo ${!b//_/-}
    

    将输出abc-de-f

    请参阅here,了解有关 BASH 中转义艺术的讨论

    【讨论】:

    • 赞成链接到 wiki.bash-hackers.org,在那里我找到了解决问题的方法。谢谢!!!
    猜你喜欢
    • 2020-12-21
    • 2020-08-14
    • 2014-12-31
    • 1970-01-01
    • 2019-03-28
    • 1970-01-01
    • 2016-09-13
    • 2020-02-04
    相关资源
    最近更新 更多