2017-06-23 92 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〜)$ {''作为示例。 –