在echo语句中删除转义字符

时间:2019-07-04 18:24:37

标签: bash shell

使用echo语句打印时,原始字符串会发生突变。

#!/bin/bash

response='{\\\"test\\\":\\\"data\\\"}'
echo $response;

实际输出-{\\"test\\":\\"data\\"}

预期的输出-{\\\"test\\\":\\\"data\\\"}

2 个答案:

答案 0 :(得分:2)

  1. 引用您的变量(请参见https://mywiki.wooledge.org/Quotes
  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'