$(declare -p) バックスラッシュを追加し続けます。

$(declare -p) バックスラッシュを追加し続けます。

から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\\\"
...

ここで何が起こっているのでしょうか?

ベストアンサー1

おすすめ記事