如何复制ksh关联数组?

时间:2011-07-11 13:43:40

标签: arrays associative-array ksh copying

有没有办法复制关联数组?我意识到可以使用单个衬垫轻松复制常规阵列:

set -A NEW_ARRAY $(echo ${OTHER_ARRAY[*]})

但使用关联数组这样做只会以这种方式为您提供值。

我知道nameref但是我有兴趣知道是否有一种复制数组的方法,使原始数组不受影响。

1 个答案:

答案 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