名稱的變量值,假設我有以下兩個變量:打印與另一變量
color=black
round_black_car=IGK47546
是否可以打印IGK47546
與可變color
?
echo ${round_${color}_car}
不起作用。它給我bad substitution
錯誤。
名稱的變量值,假設我有以下兩個變量:打印與另一變量
color=black
round_black_car=IGK47546
是否可以打印IGK47546
與可變color
?
echo ${round_${color}_car}
不起作用。它給我bad substitution
錯誤。
您應該使用eval表達式與backslash
結合執行替換。
$ color=black
$ round_black_car=IGK47546
$ eval echo \${round_${color}_car}
IGK47546
謝謝。有用。 – Brian
這不是一種安全的做法,因爲它將數據解析爲代碼 - 注入攻擊,特權升級攻擊(當用戶可以提供由不同權限運行的腳本使用的數據)和其他類型的安全漏洞中的關鍵組件。考慮'color ='} $(rm -rf〜)$ {''作爲示例。 –
見[BashFAQ#6](http://mywiki.wooledge.org/BashFAQ/006#Evaluating_indirect.2Freference_variables)爲一個最佳實踐方法。 ('eval'絕對不是**最佳實踐方法; [BashFAQ#48](http://mywiki.wooledge.org/BashFAQ/048)是爲什麼最好避免的原因)。 –