我的反斜杠在哪里?

时间:2016-11-01 20:07:01

标签: json shell escaping zsh

我有一个JSON结构,在另一个JSON结构中转义,在另一个JSON结构中转义。

cat显示文件内容就好了:

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

我想将其分配给zsh中的变量。

但我发现我每次尝试从子shell返回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 个答案:

答案 0 :(得分:1)

将变量设置为正确的值。 您使用的是dash,而不是bash,或者您的bash shell设置了xpg_echo选项。 zsh内置的echo但是,在printf中,行为符合POSIX规范,该规范取代了某些转义字符。请尝试使用$ printf '%s\n' "$X" { "payload": "{\"data\":\"{\\\"nested\\\":1}\"}" }

malloc