$ 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")'
那么,有没有办法做类似的事情declare -p astr[0]
并检索这样的事情:declare -- astr[0]="a'\"b"
?
我可以使用sed
或其他东西,但我想知道 bash 是否允许declare -p
以某种我无法猜到的方式通过 astr[n] 访问?
如果您只是在寻找一种使用转义特殊字符显示数据的方法,那么in的
%q
格式字符串将为您做到这一点:printf
bash
要复制
declare -p
您建议的 -like 输出:这是来自
bash
手册,关于%q
格式字符串printf
:使用 bash v4.4,您可以使用
@A
参数扩展运算符获得类似的结果,但对于单个数组元素无效:或类似于
%q
printf 格式,您可以使用@Q
运算符: