使用echo语句打印时,原始字符串会发生突变。
#!/bin/bash
response='{\\\"test\\\":\\\"data\\\"}'
echo $response;
实际输出-{\\"test\\":\\"data\\"}
预期的输出-{\\\"test\\\":\\\"data\\\"}
答案 0 :(得分:2)
root@ef0c924ba7fa:/tornado_api# which pip3
/usr/bin/pip3
root@ef0c924ba7fa:/tornado_api# readlink $(which pip3)
root@ef0c924ba7fa:/tornado_api#
,而不是printf
(请参阅https://unix.stackexchange.com/q/65803/133219)例如:
echo
答案 1 :(得分:0)
这在bash中按预期工作,但是您使用$ response='{\\\"test\\\":\\\"data\\\"}'
$ printf '%s\n' "$response"
{\\\"test\\\":\\\"data\\\"}
运行它。参见:Why does my bash code fail when I run it with sh?
但是,当您想按原样打印字符串时,请使用sh
:
printf
这对于所有shell中的所有值都正确,包括response='{\\\"test\\\":\\\"data\\\"}'
printf '%s\n' "$response"
response='*'
和reponse='-n'