【发布时间】:2021-04-06 03:12:54
【问题描述】:
cert_list=()
env_var=( "lbjk1" "lbjk2" )
for id1 in ${env_var[@]}; do
declare -A lj_cert
lj_cert[CONFIG_FILE]="hello_$id1"
cert_list+=(lj_cert)
done
declare -n cert
for cert in "${cert_list[@]}"; do
echo ${cert[CONFIG_FILE]}
done
我得到以下输出
hello_lbjk2
hello_lbjk2
但预期的输出是
hello_lbjk1
hello_lbjk2
我哪里错了?
【问题讨论】:
-
您将
hello_$id1字符串存储在单个位置lj_cert[CONFIG_FILE]。它只能保存一个值。 -
您能解释一下您的基本目标吗?这似乎相当复杂,我想知道是否有更简单的方法来做你想做的任何事情。
-
我试图将值存储在上面声明的 cert_list 数组中。我稍后必须将更多值附加到 cert_list。但是现在,只有 hello_lbjk1 和 hello_lbjk2?这可以通过创建动态数组创建来实现吗?比如声明 -A lj_cert_$id1?
-
你想在更高的层次上做什么?这些值的含义是什么?你在用它们做什么?你有问题X,你认为解决方案是Y;我想知道 X 是什么。见:XY problem
-
我的目标是使用 declare -A lj_cert_$id1 创建一个动态关联数组,因此我得到两个可以附加到 cert_list 的动态关联数组。这是我唯一的要求。我只需要在现有的代码库中使用它。
标签: bash shell associative-array