เนื่องจากฉันมีกรณีที่arr2
อาจว่างเปล่า แต่ตั้งฉันไม่สามารถหาทางออกที่ง่าย ดังนั้นฉันต้องไปกับฟังก์ชั่นและตัวแปรอุณหภูมิทั่วโลก แต่มันใช้ได้กับทุกกรณีและใน bash 3.2 และ 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[@]}"
ฉันใช้การอ้างอิงอาเรย์ทางอ้อมเพื่อคัดลอกค่าไปTEMP_VAR
แต่ฉันไม่สามารถเข้าใจการกำหนดอาเรย์ทางอ้อมใน bash ดังนั้นสองบรรทัดและตัวแปร temp
สำหรับset -eu
แฟนคุณที่นั่น
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[@]}"})