2016-11-01 5 views
0

다른 JSON 구조 내부로 이스케이프 처리 된 JSON 구조가 다른 JSON 구조 내부로 이스케이프 처리되었습니다. 내 백 슬러시는 어디로 갔습니까?

cat

은 잘 파일 내용을 보여줍니다

cat test.json 
{ 
    "payload": "{\"data\":\"{\\\"nested\\\":1}\"}" 
} 

내가 zsh에서 변수에이를 할당 할.

그러나 서브 쉘에서 cat 출력을 반환하려는 모든 시도가 잘못된 백 슬래시 수를 제공한다는 사실을 알고 있습니다.

X="$(cat test.json)" 
echo "$X" 
{ 
    "payload": "{\"data\":\"{\\"nested\\":1}\"}" 
} 

echo $(cat test.json) 
{ "payload": "{\"data\":\"{\\"nested\\":1}\"}" } 

echo $(<test.json) 
{ "payload": "{\"data\":\"{\\"nested\\":1}\"}" } 

내 백 슬래시는 어디로 갔습니까? 내가 돌려받을 수 있을까?

나는 zsh 5.2 (x86_64-apple-darwin16.0)을 사용하고 있습니다.

+1

어떤 버전의 bash를 사용하십니까? 나는 bash-4.3.46 (ArchLinux)에서 문제를 재현 할 수 없다. – agg3l

+0

아, 알았어. 문제는'zsh '을 사용하고있는 것처럼 보입니다. 나는 그 질문을 갱신 할 것이다. – Birchlabs

답변

1

변수가 올바른 값으로 설정됩니다. bash이 아닌 dash을 사용하거나 bash 셸의 xpg_echo 옵션 세트를 사용 중입니다. zshecho에 내장되어 있지만 특정 이스케이프 문자를 대체하는 POSIX 사양에 따라 작동합니다. 대신 printf을 사용해보십시오 :

관련 문제