如何从变量获取数组名(How to get the array name from a variab

2019-10-19 07:38发布

如何从下面得到数组名?

充分利用配置的阵列的名称:

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]

Answer 1:

您可以使用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


Answer 2:

添加echo

例:

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

$ bash 1.sh
abcd dcba


文章来源: How to get the array name from a variable
标签: shell unix ksh