假设我从item1=('item1' '1' '20')开始
然后我定义itemnumber=2
我想将下一个数组创建为item$itemnumber=('item2' '4' '77'),但出现语法错误。
之后,我只想做itemnumber=$((itemnumber+1)),并创建item$itemnumber=('item3' '17' '15')
它会给我三个数组项1,2和3:

item1=('item1' '1' '20')
item2=('item2' '4' '77')
item3=('item3' '17' '15')

这可能吗?

最佳答案

使用declare命令,尽管您需要修改执行分配的方式。

declare -a "item$itemnumber"
declare "item$itemnumber+=(item$itemnumber 4 77)

bash4.3中,使用命名引用大大简化了这一过程。
itemnumber=0
declare -n arr=item$itemnumber
arr+=(item$itemnumber 1 20)
((itemnumber++))
declare -n arr=item$itemnumber
arr+=(item$itemnumber 4 77)
((itemnumber++))
declare -n arr=item$itemnumber
arr+=(item$itemnumber 17 15)

只需增加itemnumber,重置引用,然后像使用实际数组一样使用引用。

10-08 07:31