bash - Bash 中数组的双重插值

标签 bash

我正在尝试制作一个脚本,以便我可以轻松地向其中添加主机类型,而无需更改代码本身。每种类型的主机都有一组特定的 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/

相关文章:

linux - 创建 bash 脚本以自动执行分析多个文件的任务

python - 如何在 Python 中实现常见的 bash 习语?

bash - 编写 bash 脚本时,如何在脚本退出时阻止 session 退出?

linux - 在 GNU screen 硬状态中显示 Windows 用户

bash - 如何检查文件是否有符号链接(symbolic link)

bash - 如何检查传递给 shell 脚本的参数是否不是整数?

linux - 对每个主机使用自定义参数的并行 SSH

arrays - 如何在 bash shell 脚本中将多行输入读取到数组中

regex - 如何从 bash 中的字符串中提取值?

linux - 单列数据转多列