遍历动态创建的数组



我正在尝试迭代一个包含其他数组名称的数组。我的目标是能够访问每个动态创建的数组的每个值。

这是我的循环,我在其中迭代从命令行传递的 $REQUIRED_PARAMS

for param in "${REQUIRED_PARAMS[@]}"
do
create_param_array ${param} "${path_to_txt_reports}/${report}"
echo "${WBC[@]}"
echo "${!param}"
done

这是函数create_param_array,基本上函数解析文件 get,获取一些值并创建一个与参数同名的数组

################################################
# Function: create_param_array
# Inputs : $1 - param
#          $2 - full relative path to pdf report
# Outputs: array of parameters values
#################################################
create_param_array () {
path=$2
case $1 in
WBC)
WBC=($(get_param_values $1 $2))
verbose_print WBC ${WBC[@]}
;;
....

到目前为止一切顺利,问题是我需要访问这些值,但我不知道创建的数组的名称,所以我不能这样做

echo "${WBC[@]}"

打印出所有值

15.7 11.6 15.8

我试过了

echo "${!param}"
echo "${!param[@]}"

但显然参数不是数组,所以我得到了

15.7
0

任何帮助非常感谢。

将数组名称与[@]一起存储在间接寻址中使用的变量中:

#! /bin/bash
WBC=(15.7 11.6 15.8)
p='WBC[@]'
echo "${!p}"

最新更新