2017-06-23 138 views
0

名稱的變量值,假設我有以下兩個變量:打印與另一變量

color=black 
round_black_car=IGK47546 

是否可以打印IGK47546與可變color

echo ${round_${color}_car}不起作用。它給我bad substitution錯誤。

+0

見[BashFAQ#6](http://mywiki.wooledge.org/BashFAQ/006#Evaluating_indirect.2Freference_variables)爲一個最佳實踐方法。 ('eval'絕對不是**最佳實踐方法; [BashFAQ#48](http://mywiki.wooledge.org/BashFAQ/048)是爲什麼最好避免的原因)。 –

回答

-1

您應該使用eval表達式與backslash結合執行替換。

$ color=black 
$ round_black_car=IGK47546 
$ eval echo \${round_${color}_car} 
IGK47546 
+0

謝謝。有用。 – Brian

+1

這不是一種安全的做法,因爲它將數據解析爲代碼 - 注入攻擊,特權升級攻擊(當用戶可以提供由不同權限運行的腳本使用的數據)和其他類型的安全漏洞中的關鍵組件。考慮'color ='} $(rm -rf〜)$ {''作爲示例。 –