我的反斜杠哪里去了?
Where did my backslashes go?
我有一个 JSON 结构,在另一个 JSON 结构中转义,在另一个 JSON 结构中转义。
cat
显示文件内容就好了:
cat test.json
{
"payload": "{\"data\":\"{\\"nested\\":1}\"}"
}
我想将其分配给 zsh
中的一个变量。
但我发现我每次尝试 return 子 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)
。
正在将变量设置为正确的值。 您使用的是 dash
,而不是 bash
,或者您的 bash
shell 设置了 xpg_echo
选项。但是,zsh
内置 echo
的行为符合 POSIX 规范,它替换了某些转义字符。尝试使用 printf
代替:
$ printf '%s\n' "$X"
{
"payload": "{\"data\":\"{\\"nested\\":1}\"}"
}
我有一个 JSON 结构,在另一个 JSON 结构中转义,在另一个 JSON 结构中转义。
cat
显示文件内容就好了:
cat test.json
{
"payload": "{\"data\":\"{\\"nested\\":1}\"}"
}
我想将其分配给 zsh
中的一个变量。
但我发现我每次尝试 return 子 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)
。
正在将变量设置为正确的值。 您使用的是 但是,dash
,而不是 bash
,或者您的 bash
shell 设置了 xpg_echo
选项。zsh
内置 echo
的行为符合 POSIX 规范,它替换了某些转义字符。尝试使用 printf
代替:
$ printf '%s\n' "$X"
{
"payload": "{\"data\":\"{\\"nested\\":1}\"}"
}