2016-09-29 143 views
0

我想在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字符串替換中處理轉義字符的最佳做法是什麼?

回答

3

在第二種情況下,您不需要第二個$,因爲a是字符串。

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

如果你想添加的indirection一個級別,您可以變量之前使用!作爲

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

將輸出a,而

echo ${!b//_/-} 

將輸出abc-de-f

請參閱here關於在BASH中轉義藝術的討論