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中转义艺术的讨论