답변:
나는 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[@]}"})