我现在已经花了几个小时,似乎无法找到解决方案。
我在代码中设置了三个关联数组:
模板1 模板2 template3
这实际上可能是n个数组,并且代码变量也在代码中设置,以便:
template_name="template$counter"
会给下一个模板创建。所以我的问题是当我想循环n个关联数组时,我需要做类似的事情:
for (( i = 1; i < $counter; i++ )); do
template_name="template$i"
for i in ${!template_name[@]}; do
echo "$i - ${template_name[$i]}"
done
done
但它不起作用 - 我得到了错误的替换错误。似乎我可以使用变量名来动态访问关联数组。还有其他方法来看待这个问题吗?
答案 0 :(得分:1)
经过多次挖掘后,我找到了答案:
eval echo "APP_NAME $template_name: "\${${template_name}[APP_NAME]}
答案 1 :(得分:0)
我不确定这是否是您想要的,但我认为它可以帮助您找到比使用eval更好的解决方案。
#!/bin/bash
template0=( "123" "456" )
template1=( "zxc" "edc" )
counter=2
for (( i = 0; i != $counter; ++i )); do
template_name="template$i[@]"
echo ${!template_name}
for j in ${!template_name}; do
echo "$j - template$i"
done
done
产地:
==> 123 456
==> 123 - template0
==> 456 - template0
==> zxc edc
==> zxc - template1
==> edc - template1