0

連想配列をコピーする方法はありますか?通常の配列は、次のように1つのライナーで簡単にコピーできることに気付きました。

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

しかし、連想配列を使用してこれを行うと、その方法で値が得られます。

私は知ってnamerefいますが、元の配列が影響を受けないように配列をコピーする方法があるかどうかを知りたいと思っています。

4

1 に答える 1

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
于 2011-07-11T14:34:42.527 に答える