$ str="a'\"b"
$ declare -p str
declare -- str="a'\"b" # see " was escaped, possibly other chars will too
$ astr=("$str" "c")
$ declare -p astr
declare -ax astr='([0]="a'\''\"b" [1]="c")'
então, existe alguma maneira de fazer algo como declare -p astr[0]
e recuperar algo assim: declare -- astr[0]="a'\"b"
?
Eu poderia usar sed
ou outra coisa, mas gostaria de saber se o bash permite acessar astr[n] thru declare -p
de alguma forma que ainda não consegui adivinhar?
Se você está apenas procurando uma maneira de exibir os dados com caracteres especiais de escape, a
%q
string de formatoprintf
inbash
faria isso para você:Para replicar a
declare -p
saída -like que você sugere:Isso é do
bash
manual, em relação à%q
string de formato deprintf
:Com o bash v4.4, você pode usar o
@A
operador de expansão de parâmetro para obter resultados semelhantes, mas não efetivamente para um único elemento de matriz:Ou semelhante ao
%q
formato printf, você pode usar o@Q
operador: