我有一个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)
。
答案 0 :(得分:1)
将变量设置为正确的值。 您使用的是 dash
,而不是bash
,或者您的bash
shell设置了xpg_echo
选项。zsh
内置的echo
但是,在printf
中,行为符合POSIX规范,该规范取代了某些转义字符。请尝试使用$ printf '%s\n' "$X"
{
"payload": "{\"data\":\"{\\\"nested\\\":1}\"}"
}
:
malloc