New paste Repaste Download
(ins)ormaaj 12 (198294) 0 ~/doc/gentoo $  echo; ( bash /proc/self/fd/9 9<<\_EOF )
#!/usr/bin/env bash
shopt -s lastpipe extglob expand_aliases
function copy_array {
        ((1 + ${#} % 2)) || return
        typeset k l q r s t
        typeset -a v=(src ret)
        IFS= read -d '' t <<-\EOF
                [ "${!r}" = "$1" ${| unset -n r; } ]; \
                typeset -Gn r=${v[$((l=$?))]}; \
                printf '%s[%q]=%q\\n' "${!r}" "$k" "${src[$k]}"; \
                typeset -p "${!src}" "${!ret}" \
        EOF
        t=r[\${\|${t}\;}\${k}] s=$t
        typeset -n s r=src
        shopt -s localvar_unset
        while
                typeset -n r ret src
                src=$2 ret=$1
                for k in "${!src[@]}"; do
                        s=$s
                done
                command shift 2
                ${1+\:} false
        do  unset -n -- "${v[@]}"
        done
        shopt -u localvar_unset
}
function m {
        typeset -gx BASH_COMPAT=51; local -; set +m
        typeset -A a x=([0]=1 [2]=3 [4]=5)
        typeset -a b y=([0]=1 [2]=3 [4]=5)
        copy_array a x
        printf %s\\n -------
        copy_array b y
        typeset -p a x b y
}
set -x
m
# vim: set ft=bash fenc=utf-8 ff=unix ts=4 noet :
_EOF
+ m
+ typeset -gx BASH_COMPAT=51
+ local -
+ set +m
+ x=(['0']='1' ['2']='3' ['4']='5')
+ typeset -A a x
+ y=(['0']='1' ['2']='3' ['4']='5')
+ typeset -a b y
+ copy_array a x
+ (( 1 + 2 % 2 ))
+ typeset k l q r s t
+ v=('src' 'ret')
+ typeset -a v
+ IFS=
+ read -d '' t
+ t='r[${|[ "${!r}" = "$1" ${| unset -n r; } ]; typeset -Gn r=${v[$((l=$?))]}; printf '\''%s[%q]=%q\n'\'' "${!r}" "$k" "${src[$k]}"; typeset -p "${!src}" "${!ret}" ;}${k}]'
+ s='r[${|[ "${!r}" = "$1" ${| unset -n r; } ]; typeset -Gn r=${v[$((l=$?))]}; printf '\''%s[%q]=%q\n'\'' "${!r}" "$k" "${src[$k]}"; typeset -p "${!src}" "${!ret}" ;}${k}]'
+ typeset -n s r=src
+ shopt -s localvar_unset
+ typeset -n r ret src
+ src=x
+ ret=a
+ for k in "${!src[@]}"
+++ unset -n r
++ '[' x = a ']'
++ typeset -Gn r=ret
++ printf '%s[%q]=%q\n' a 4 5
a[4]=5
++ typeset -p x a
declare -A x=([4]="5" [2]="3" [0]="1" )
declare -A a
+ s=5
+++ unset -n r
++ '[' a = a ']'
++ typeset -Gn r=src
++ printf '%s[%q]=%q\n' x 4 5
x[4]=5
++ typeset -p x a
declare -A x=([4]="5" [2]="3" [0]="1" )
declare -A a
+ for k in "${!src[@]}"
+++ unset -n r
++ '[' x = a ']'
++ typeset -Gn r=ret
++ printf '%s[%q]=%q\n' a 2 3
a[2]=3
++ typeset -p x a
declare -A x=([4]="5" [2]="3" [0]="1" )
declare -A a=([4]="5" )
+ s=3
+++ unset -n r
++ '[' a = a ']'
++ typeset -Gn r=src
++ printf '%s[%q]=%q\n' x 2 3
x[2]=3
++ typeset -p x a
declare -A x=([4]="5" [2]="3" [0]="1" )
declare -A a=([4]="5" )
+ for k in "${!src[@]}"
+++ unset -n r
++ '[' x = a ']'
++ typeset -Gn r=ret
++ printf '%s[%q]=%q\n' a 0 1
a[0]=1
++ typeset -p x a
declare -A x=([4]="5" [2]="3" [0]="1" )
declare -A a=([4]="5" [2]="3" )
+ s=1
+++ unset -n r
++ '[' a = a ']'
++ typeset -Gn r=src
++ printf '%s[%q]=%q\n' x 0 1
x[0]=1
++ typeset -p x a
declare -A x=([4]="5" [2]="3" [0]="1" )
declare -A a=([4]="5" [2]="3" )
+ command shift 2
+ false
+ shopt -u localvar_unset
+ printf '%s\n' -------
-------
+ copy_array b y
+ (( 1 + 2 % 2 ))
+ typeset k l q r s t
+ v=('src' 'ret')
+ typeset -a v
+ IFS=
+ read -d '' t
+ t='r[${|[ "${!r}" = "$1" ${| unset -n r; } ]; typeset -Gn r=${v[$((l=$?))]}; printf '\''%s[%q]=%q\n'\'' "${!r}" "$k" "${src[$k]}"; typeset -p "${!src}" "${!ret}" ;}${k}]'
+ s='r[${|[ "${!r}" = "$1" ${| unset -n r; } ]; typeset -Gn r=${v[$((l=$?))]}; printf '\''%s[%q]=%q\n'\'' "${!r}" "$k" "${src[$k]}"; typeset -p "${!src}" "${!ret}" ;}${k}]'
+ typeset -n s r=src
+ shopt -s localvar_unset
+ typeset -n r ret src
+ src=y
+ ret=b
+ for k in "${!src[@]}"
+++ unset -n r
++ '[' y = b ']'
++ typeset -Gn r=ret
++ printf '%s[%q]=%q\n' b 0 1
b[0]=1
++ typeset -p y b
declare -a y=([0]="1" [2]="3" [4]="5")
declare -a b
+ s=1
+++ unset -n r
++ '[' b = b ']'
++ typeset -Gn r=src
++ printf '%s[%q]=%q\n' y 0 1
y[0]=1
++ typeset -p y b
declare -a y=([0]="1" [2]="3" [4]="5")
declare -a b
+ for k in "${!src[@]}"
+++ unset -n r
++ '[' y = b ']'
++ typeset -Gn r=ret
++ printf '%s[%q]=%q\n' b 2 3
b[2]=3
++ typeset -p y b
declare -a y=([0]="1" [2]="3" [4]="5")
declare -a b
+ s=3
+++ unset -n r
++ '[' b = b ']'
++ typeset -Gn r=src
++ printf '%s[%q]=%q\n' y 2 3
y[2]=3
++ typeset -p y b
declare -a y=([0]="1" [2]="3" [4]="5")
declare -a b
+ for k in "${!src[@]}"
+++ unset -n r
++ '[' y = b ']'
++ typeset -Gn r=ret
++ printf '%s[%q]=%q\n' b 4 5
b[4]=5
++ typeset -p y b
declare -a y=([0]="1" [2]="3" [4]="5")
declare -a b
+ s=5
+++ unset -n r
++ '[' b = b ']'
++ typeset -Gn r=src
++ printf '%s[%q]=%q\n' y 4 5
y[4]=5
++ typeset -p y b
declare -a y=([0]="1" [2]="3" [4]="5")
declare -a b
+ command shift 2
+ false
+ shopt -u localvar_unset
+ typeset -p a x b y
declare -A a=([4]="5" [2]="3" [0]="1" )
declare -A x=([4]="5" [2]="3" [0]="1" )
declare -a b
declare -a y=([0]="1" [2]="3" [4]="5")
Filename: stdin. Size: 5kb. View raw, , hex, or download this file.

This paste expires on 2025-04-17 05:51:54.492649. Pasted through v1-api.