有没有办法复制关联数组?我意识到可以使用单个衬垫轻松复制常规阵列:
set -A NEW_ARRAY $(echo ${OTHER_ARRAY[*]})
但使用关联数组这样做只会以这种方式为您提供值。
我知道nameref
但是我有兴趣知道是否有一种复制数组的方法,使原始数组不受影响。
答案 0 :(得分:1)
未经测试的:
typeset -A NEW_ARRAY
for key in "${!OTHER_ARRAY[@]}"; do
NEW_ARRAY["$key"]="${OTHER_ARRAY[$key]}"
done
测试:
#!/usr/bin/ksh93
OTHER_ARRAY=( [Key1]="Val1" [Key2]="Val2" [Key3]="Val3" )
echo Keys: ${!OTHER_ARRAY[*]}
echo Values: ${OTHER_ARRAY[*]}
typeset -A NEW_ARRAY
for key in "${!OTHER_ARRAY[@]}"; do
NEW_ARRAY["$key"]="${OTHER_ARRAY[$key]}"
done
echo Keys: ${!NEW_ARRAY[*]}
echo Values: ${NEW_ARRAY[*]}
结果:
/home/exuser>./a
Keys: Key3 Key1 Key2
Values: Val3 Val1 Val2
Keys: Key3 Key1 Key2
Values: Val3 Val1 Val2