Bash双引号转义和var

时间:2015-01-12 09:31:47

标签: bash escaping var quote

我需要使用JSON创建一个curl POST方法:

request=`$home/post.curl $url  " { \"name\": \"aaaaaaa\", \"message\": \"I NEED TO NOT INTERPRET THIS VAR \${rich_message}\" "`

但是,读取请求的服务器会获得"Message=I NEED TO NOT INTERPRET THIS VAR "

我可以做什么?

2 个答案:

答案 0 :(得分:1)

如果您需要按字面意思传递整个JSON字符串,请将其放在单引号中:

request=$($home/post.curl "$url" '{ "name": "aaaaaaa", 
"message": "I NEED TO NOT INTERPRET THIS VAR \${rich_message}"}$)

(请注意,我添加了缺少的结尾}并将过时的反引号更改为首选的$(...)语法。我还将字符串拆分为多行,以便易读。最后,我放{{1}在双引号中,因为这种类型的字符串通常应该被正确引用。)

如果你需要整个字符串是双引号,你使用的语法将需要一个额外的反斜杠(反引号类似于双引号;你需要另一个转义来逃避转义,因为它);但切换到"$url"也会解决这个副作用。

答案 1 :(得分:0)

\的{​​{1}}婴儿是错误的。 此外,您最后缺少$以获得正确的JSON。 所以适当的JSON应该是:

}