如何从变量中获取数组名称

时间:2014-02-07 06:06:17

标签: shell unix ksh

如何从下面获取数组名称?

从config获取数组的名称:

jobcfgUniqName=`echo ${config_data} | awk -F "#" '{print $3}'`

创建一个数组:

for ((xx = 0; xx <= ${#joblognameSearch[@]}; xx++))
do
    print $joblognameSearch[$xx]
    eval ($jobcfgUniqName)[$xx]=`grep -B 3 -i  error  $joblogPath/$joblognameSearch[$xx]`
    print jobcfgUniqName : ${jobcfgUniqName}
done

这条线我尝试改变了许多方法,但没有奏效:

eval ($jobcfgUniqName)[$xx]

2 个答案:

答案 0 :(得分:1)

添加echo

示例:

#!/bin/bash
A="abcd dcba"
B=A
C='eval "echo \$$B"'
eval "$C"

$ bash 1.sh
abcd dcba

答案 1 :(得分:1)

您可以使用BASH的declare公告来替换您的评估:

declare arr_"$jobcfgUniqName"[$xx]=`grep -B 3 -i error $joblogPath/$joblognameSearch[$xx]`

现在,您将使用前缀arr_和一些变量名称$jobcfgUniqName进行动态数组创建。

测试:

# set the array
s='abc'
declare arr_"$s"[0]='foo'
declare arr_"$s"[1]='bar'

# retrieve the values
v1=arr_"$s"[0]
v2=arr_"$s"[1]

echo "${!v1}"
foo
echo "${!v2}"
bar