名称的变量值,假设我有以下两个变量:打印与另一变量
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)是为什么最好避免的原因)。 –