#!/bin/bash
key1=true
key2=true
filter_param1=filter1
filter_param2=filter2
declare -A arr=( [$key1]=$filter_param1 [$key2]=$filter_param2 )
for key in ${!arr[@]}; do
echo "key value is " $key
if [ "$key" == "true" ] ; then
echo $key ${arr[${key}]}
fi
done
上面的代码只迭代一次,如果filter_param1和filter_param2都是false或者都是true。对于所有其他情况,它迭代两次。我能知道发生这种情况的原因
答案 0 :(得分:1)
它正在发生,因为如果$key1
和$key2
是相同的字符串,那么该键的最新分配会设置其值。
如果在声明后打印出数组,如果键是相同的,你会看到它只有一个项目。