从help declare
:
-p display the attributes and value of each NAME
只要运行就declare -p
可以按预期工作。在子 shell 中运行它也是如此(declare -p)
。
然而,当使用 时echo "$(declare -p)"
,即在子 shell 中执行命令,再次捕获stdout
并回显该命令stdout
,我注意到发生了一些奇怪的事情:每次调用时, 的输出declare -p
都会变得更长,并且会出现额外的反斜杠。执行时间也越来越长。
第一次运行的输出echo "$(declare -p)"
:
...
declare -x SHELL="/bin/bash"
...
第二次运行:
...
declare -x SHELL="/bin/bash"
...
declare -x SHELL=\"/bin/bash\"
...
第三次运行:
...
declare -x SHELL="/bin/bash"
...
declare -x SHELL=\"/bin/bash\"
...
declare -x SHELL=\\\"/bin/bash\\\"
...
这里发生了什么?