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
将其视为一种参考。
我目前正在学习脚本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
将其视为一种参考。