Bash,使用循环创建多个不同名称的数组

Bash, create multiple arrays with different names using loops

我目前正在学习脚本shell编程(bash),并尝试通过循环制作多个具有不同名称的数组,以便我可以根据数据的长度放置数据文件。我已经获取了数据文件的长度(标记为'num'),这是我脑中的想法。

for (( i=0; i<num; i++ ))
do  
    let array$i=()
done

我查了很多方法都没有用。我是 bash 的新手,所以任何评论/建议/教导都将不胜感激。谢谢。

最近够了 bash, using namerefs:

for (( i=0; i<num; i++ )); do  
  declare -n nr="array$i"
  declare -a nr=()
done

然后,每次您想向 array10 添加元素时:

i=10
declare -n nr="array$i"
nr+=( foo bar )

要访问您可以使用 nameref (nr) 或数组名称的元素,它的工作原理相同(只要您不修改 nameref 属性):

$ i=10
$ declare -n nr="array$i"
$ printf '%s\n' "${nr[@]}"
foo
bar
$ printf '%s\n' "${array10[@]}"
foo
bar

将其视为一种参考。