| (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")
|