如何从下面得到数组名?
充分利用配置的阵列的名称:
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]
您可以使用declare
BASH的公告本替换您的EVAL:
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
添加echo
。
例:
#!/bin/bash
A="abcd dcba"
B=A
C='eval "echo \$$B"'
eval "$C"
$ bash 1.sh
abcd dcba