我试图在bash中间接引用数组中的值。
anotherArray=("foo" "faa")
foo=("bar" "baz")
faa=("test1" "test2")
for indirect in ${anotherArray[@]}
do
echo ${!indirect[0]}
echo ${!indirect[1]}
done
这不起作用。为了得到$foo的不同值,我尝试了很多不同的方法,通过回显$indirect,但是我只能得到第一个值,所有的值,'0'或者什么都没有。
最佳答案
必须在用于间接寻址的变量中写入索引:
anotherArray=("foo" "faa")
foo=("bar" "baz")
faa=("test1" "test2")
for indirect in ${anotherArray[@]}; do
all_elems_indirection="${indirect}[@]"
second_elem_indirection="${indirect}[1]"
echo ${!all_elems_indirection}
echo ${!second_elem_indirection}
done
如果要遍历
anotherArray
中引用的每个数组的每个元素,请执行以下操作:anotherArray=("foo" "faa")
foo=("bar" "baz")
faa=("test1" "test2")
for arrayName in ${anotherArray[@]}; do
all_elems_indirection="${arrayName}[@]"
for element in ${!all_elems_indirection}; do
echo $element;
done
done
或者,您可以直接将整个间接指令存储在第一个数组中:
anotherArray=("foo[@]" "faa[@]")
关于arrays - bash中对数组值的间接引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40307250/