我有一小段代码:
#!/bin/bash
item01=('item1' '1' '20')
item02=('item2' '4' '77')
item03=('item3' '17' '15')
zeroone=01
zerotwo=02
echo ""
declare -a array=()
array=${item$zeroone[@]}
echo ""
echo ${array[@]}
echo ""
显然这不起作用(糟糕的替代)。
有没有办法让它发挥作用?这样一个变量可以是数组名称的一部分吗?
而且,特别是要做这项工作:
array[0]=${item$zeroone[0]}
和
another_variable=${item$zeroone[0]}
THX
答案 0 :(得分:2)
更好地使用关联数组:
declare -A item=([1, 0]='item1' [1, 1]='1' [1, 2]='20')
...
访问元素:
one=1
echo "${item[$one, 0]}"
循环:
for ((I = 0; I <= 2; ++I)); do
echo "${item[$one, $i]}"
done
您也可以使用字符串而不是数字:
declare -A item=(["01", 0]='item1' ["01", 1]='1' ["01", 2]='20')
另一个答案:您实际上可以使用引用:
item01=('item1' '1' '20')
item02=('item2' '4' '77')
item03=('item3' '17' '15')
zeroone=01
zerotwo=02
echo ""
ref="item${zeroone}[@]"
declare -a array=("${!ref}") ## Still produces 3 arguments as if "${item01[@]}" was called
echo ""
echo "${array[@]}"
echo ""