からhelp declare
:
-p display the attributes and value of each NAME
ただ実行すると、declare -p
期待どおりに動作します。サブシェルで実行する場合も同様です(declare -p)
。
しかし、を使用するとecho "$(declare -p)"
、つまりサブシェルでコマンドを実行し、stdout
コマンドを再キャプチャしてエコーする場合、stdout
奇妙なことが発生することがわかりました。呼び出すたびにバックスラッシュが出力されますdeclare -p
。実行時間も長くなっています。
最初の実行の出力echo "$(declare -p)"
:
...
declare -x SHELL="/bin/bash"
...
2回目の実行:
...
declare -x SHELL="/bin/bash"
...
declare -x SHELL=\"/bin/bash\"
...
3回目の実行:
...
declare -x SHELL="/bin/bash"
...
declare -x SHELL=\"/bin/bash\"
...
declare -x SHELL=\\\"/bin/bash\\\"
...
ここで何が起こっているのでしょうか?