我正在尝试迭代一个包含其他数组名称的数组。我的目标是能够访问每个动态创建的数组的每个值。
这是我的循环,我在其中迭代从命令行传递的 $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}"