如何从下面获取数组名称?
从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]
答案 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