我有这样的事情:
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 语言语法中的其他引用形式。