Вот небольшая функция копирования для bash-переменных любого вида
- нормальные скалярные переменные
- индексированные массивы
- ассоциативные массивы
### Function vcp -VariableCoPy-
# $1 Name of existing Source-Variable
# $2 Name for the Copy-Target
vcp() {
local var=$(declare -p $1)
var=${var/declare /declare -g }
eval "${var/$1=/$2=}"
}
Использование, примеры:
# declarations
var=" 345 89 "
ind_array=(Betty " 345 89 ")
declare -A asso_array=([one]=Harry [two]=Betty [some_signs]=" +*.<\$~,'/ ")
# produce the copy
vcp var varcopy
vcp ind_array ind_array_copied
vcp asso_array asso_array_2
# now you can check the equality between original and copy with commands like
# declare -p <name>
Результаты
--3 1: "${asso_array[@]}"
(5) asso_array[one]: |Harry|
(11) asso_array[some_signs]: | +*.<$~,'/ |
(5) asso_array[two]: |Betty|
--3 4: "${asso_array_2[@]}"
(5) asso_array_2[one]: |Harry|
(11) asso_array_2[some_signs]: | +*.<$~,'/ |
(5) asso_array_2[two]: |Betty|
--2 7: "${ind_array[@]}"
(5) ind_array[0]: |Betty|
(11) ind_array[1]: | 345 89 |
--2 9: "${ind_array_copied[@]}"
(5) ind_array_copied[0]: |Betty|
(11) ind_array_copied[1]: | 345 89 |
(11) 11: "$var": | 345 89 |
(11) 12: "$varcopy": | 345 89 |