打印包含反斜杠的变量

打印包含反斜杠的变量

我有这样的事情:

A=$(curl https://mysite.com)

并且curl请求返回字符串\"Hello World\"。当我现在想A使用以下之一打印到控制台时:

echo "$A"
printf '%s' "$A"

消失\了,它只是说"Hello World"。我该怎么做才能进入\"Hello World\"控制台?

答案1

如果printf '%s' "$A"没有显示任何反斜杠,那么它们就不存在。你可以curl https://mysite.com单独检查一下。

也许您对以下输出感到困惑:

bash-5.0$ typeset -p A
declare -- A="\"Hello World\""

这是 bash 输出的 shell 代码,可用于定义该$A变量。在 shell 语言的语法中,\是用来转义以下内容的",以告诉 shell 这"是数据的一部分,而不是结束引号。

它还可以有输出:

declare -- A='"Hello World"'

其作用是一样的(而且更安全)。 OrA=\"Hello\ World\"$'"Hello World"'等是 shell 语言语法中的其他引用形式。

相关内容