将双引号中的命令行参数传递给curl。

11 浏览
0 Comments

将双引号中的命令行参数传递给curl。

我的脚本正在接收命令行参数,并需要将其以双引号的形式传递给curl命令。以下是我目前尝试的简化版本:

json=$1;
echo $json;

curl -X POST -d '{"asin":\"$json\", "template":"bolt","version":"1d"}' -H "Content-Type: application/json" http://someURL

但是它没有起作用。请帮忙解决。

0
0 Comments

问题的原因是在单引号字符串中,$变量不会被扩展。而-d参数需要使用双引号,或者至少需要将$json部分放在双引号中。

解决方法是将-d参数中的json字符串放在双引号中,并使用$json变量,如下所示:

curl -X POST -d '{"asin":"'"$json"'", "template":"bolt","version":"1d"}' -H "Content-Type: application/json" http://someURL

在这个命令中,'终止了单引号字符串,然后是"$json",然后是一个相邻的单引号字符串。

"$json"变量不应该扩展为包含未转义双引号的字符串,否则生成的json将会出错。

0