我正在尝试制作一个脚本,以便我可以轻松地向其中添加主机类型,而无需更改代码本身。每种类型的主机都有一组特定的 ID 和与其关联的模板。这是我导出的鳕鱼:
CLASS="memcache"
memcache_template=( 42 45 )
CLASS_template=${CLASS}_template
template=$( eval echo $`echo $CLASS_template` )
for i in ${template[@]}; do
echo $i
done
我得到的输出只是“42”。我需要它输出 42 和 45。
最佳答案
这是一种方法:
CLASS="memcache"
memcache_template=(42 45)
CLASS_template=${CLASS}_template[@]
for i in ${!CLASS_template}; do
echo $i
done
请参阅info“(bash)Shell 参数扩展”
中对变量间接寻址的讨论。请注意,您不能使用 ${!CLASS_template[@]}
因为它具有特殊含义。数组下标必须在间接寻址之前完成。
关于bash - Bash 中数组的双重插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7897280/