Karena saya memiliki kasing di mana saya arr2
mungkin kosong, tetapi ditetapkan, saya tidak dapat menemukan solusi sederhana. Jadi saya harus pergi dengan fungsi dan variabel temp global. Tapi itu bekerja di setiap kasus dan di bash 3.2 dan bash 4
function set_temp_array()
{ # 1 - source_array_name $2-* default_values
local default="$1"
shift
if declare -p $default >& /dev/null; then
default="${default}[@]"
TEMP_VAR=("${!default}")
else
TEMP_VAR=("${@}")
fi
}
set_temp_array arr1 "${arr2[@]}"
arr1="${TEMP_VAR[@]}"
Saya menggunakan referensi array tidak langsung untuk menyalin nilai-nilai TEMP_VAR
, tetapi saya tidak bisa menemukan penugasan array tidak langsung dalam bash, karenanya dua baris dan variabel temp
Bagi Anda set -eu
penggemar di luar sana
function set_temp_array()
{ # 1 - source_array_name $2-* default_values
local default="$1"
shift
if declare -p $default >& /dev/null; then
default="${default}[@]"
TEMP_VAR=(${!default+"${!default}"})
else
TEMP_VAR=(${@+"${@}"})
fi
}
set_temp_array arr1 ${arr2+"${arr2[@]}"}
arr1=(${TEMP_VAR+"${TEMP_VAR[@]}"})