$(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"
...

두 번째 실행:

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

여기서 무슨 일이 일어나고 있는 걸까요?

관련 정보