Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

My script is taking the command line argument and it needs to pass this to curl command in double quotes. This is the simplified version of what I tried so far:

json=$1;
echo $json;

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

But its not working. Please help

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.7k views
Welcome To Ask or Share your Answers For Others

1 Answer

$-variables in single quoted strings don't get expanded. The -d argument needs be in double quotes, or at least the $json part needs to be:

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

'-terminates the single-quoted string, then "$json" follows, and then ' starts an adjacent single quoted string.

The "$json" variable shouldn't expand to a string containing unescaped double quotes or the resulting json will be broken.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...