bash变量在字符串替换
问题描述:
我想在bash中做字符串替换,想更好地理解它。bash变量在字符串替换
我精心设计了一个成功的案例是这样的:
a=abc_de_f
var=$a
echo ${var//_/-}
outout是abc-de-f
。这工作。
然而,下面的脚本失败:
a=abc_de_f
echo ${$a//_/-}
该错误消息是${$a//_/-}: bad substitution
。 这似乎与我们如何在替代中使用变量有关。为什么这会失败?在这种情况下bash如何处理变量?
另外,在bash字符串替换中处理转义字符的最佳做法是什么?
答
在第二种情况下,您不需要第二个$
,因为a
是字符串。
a=abc_de_f
echo ${a//_/-}
如果你想添加的indirection一个级别,您可以变量之前使用!
作为
a=abc_de_f
b=a
echo ${b//_/-}
将输出a
,而
echo ${!b//_/-}
将输出abc-de-f
。
请参阅here关于在BASH中转义艺术的讨论