【发布时间】:2020-10-12 11:41:02
【问题描述】:
在我们进入这个问题之前,我知道在堆栈溢出时已经有类似的答案了。然而,这个是独一无二的,因为它使用带有关联数组的 eval 语句。 (相信我,我都读过)。
好的,现在进入问题
我有 X 个通过类似下面的 eval 函数定义的数组:
for (( i=1;i<=X;i++ ))
do
eval "declare -gA old$i"
eval "old$i[key]=value"
done
此代码在函数中:makeArrays
现在我有第二个函数必须遍历这些不同的数组
old1
old2
.
.
.
oldX
我会调用这个函数:useArrays
现在,我有一个用于这个 useArrays 函数的 for 循环。
for (( i=0;i<$#;i++ ))
do
// ACCESS OLD1[KEY]
done
我的问题是,我如何访问这个数组进行比较。 IE。 如果 [ 旧 1 -eq 0 ] 然后 ... 菲
有没有办法可以将这些关联数组复制到一个变量中,以便尽可能少地使用 eval 进行比较?
【问题讨论】:
-
比较...什么?整个阵列一次?单个键?
-
另外,哪个特定版本的 bash?如果您使用的是带有 namerefs 的版本,那么有更好的(不需要评估)方法来完成所有这些操作。
-
如果 old1 是一个数组,那么将它与一个数字进行比较是什么意思?是否要检查所有元素是否相同?您能否提供一个更具体的失败示例?
-
old1[path] -eq '/path/to/file' 将是我想要使用的比较。
-
使用版本 4.4.19