我们有一些可以在bash 4.2.X上完美运行的代码,我必须向后移植才能在3.X上运行。不幸的是,当然,bash 3不支持我们经常使用的关联数组。
其中一些很容易替换,其中的key:value对可以替换为variable_name:value对,例如
current_value[param1]=value1
current_value[param2]=value2
很容易替换为
currvalp1=value1
currvalp2=value2
但是,我要翻译的下一个AA没有固定数量的元素。一个集群可以有2-5个节点。我的第一次尝试大概是
i=1
for j in $( GET NODE NAMES HERE );do
node_${i}=${j}
echo "${node_${i}}"
((i++))
done
那给了我错误
line 30: node_1=<nodename>: command not found
line 31: ${node_${i}}: bad substitution
通过将第30行更改为
declare node_${i}=${j}
我消除了第一个错误。但是,我不知道如何克服错误的替换错误,如何引用该节点名称。 对node _ $ {i}的大多数调用将采用以下形式
for i in $(seq 1 ${nodecnt});do
ssh node_${i} <<-EOF
...
done
所以:我可以使用动态变量名来做到这一点吗?还是有更好(且仍然很简单)的方式来处理此问题?