Le 17/03/2021 à 21:13, Alex fxmbsw7 Ratchev écrivait :
hm at least now we know array declare -p formatting would work in workarounds, good to .. :)
Instead of: var=$'1\e[G\e[K2' ; declare -p var do: var=$'1\e[G\e[K2' ; printf 'declare -- %s\n' "${var@A}" And if you want a human readable dumpvars, then code it. Here it is: #!/usr/bin/env bash dump_vars () { local ___varname for ___varname; do local ___varflags=${!___varname@a} ___varflags=${___varflags:--} if [[ "$___varflags" =~ [Aa] ]]; then declare -p "$___varname" elseprintf 'declare -%s %s=%q\n' "$___varflags" "$___varname" "${!___varname}"
fi done } escapestring=$'1\e[G\e[K2' escapearray=($'new \n line' $'and \e esc')declare -A assocarray=([$'1\e[G\e[K2']=$'and \e esc' [$'new \n line']=$'1\e[G\e[K2')
declare -i intvar=42 declare -ai intarray=(-42 666 555) declare -Ai intassoc=([foo]=123 [$'1\e[G\e[K2']=456 [bar]=789) dump_vars escapestring escapearray assocarray intvar intarray intassoc Output:
declare -- escapestring=$'1\E[G\E[K2' declare -a escapearray=([0]=$'new \n line' [1]=$'and \E esc') declare -A assocarray=([$'1\E[G\E[K2']=$'and \E esc' [$'new \n line']=$'1\E[G\E[K2' ) declare -i intvar=42 declare -ai intarray=([0]="-42" [1]="666" [2]="555") declare -Ai intassoc=([$'1\E[G\E[K2']="456" [foo]="123" [bar]="789" ) declare -i nameref=42
-- Léa Gris
OpenPGP_signature
Description: OpenPGP digital signature