回答:
私は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での間接配列割り当てを理解できなかったため、2行と一時変数
あなたのために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[@]}"})