Не растекаясь мыслью по древу, вынужден констатировать, что взять и скопировать содержимое одного ассоциативного массива в другой у меня не получилось.
Не работают варианты:
declare -A H1 H2
H1=([A]=B [B]=C [C]=D)
H2=$H1
echo ${H2[@]}
# Пусто в H2, только не спит барсук
H2=(${H1[@]})
# Ошибка:
# bash: H2: B: must use subscript when assigning associative array
# bash: H2: C: must use subscript when assigning associative array
# bash: H2: D: must use subscript when assigning associative array
H2=${H1[@]}
echo ${H2[@]}
# H2[0] = "B, C, D", что легко доказывается так:
echo "1) ${!H2[@]}"
echo "2) ${H2[0]}"
Эмм... Хотел написать в русскую педивикию о присвоении массивов, да и мне самому в скрипте нужно, а оно... не работает, вообще никак. Неужели писать цикл - единственный выход для решения этой, вроде бы не слишком сложной задачи???