user3681970
user3681970

Reputation: 1281

Passed command line argument in double quotes to curl

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

Upvotes: 0

Views: 1922

Answers (1)

Petr Skocik
Petr Skocik

Reputation: 60143

$-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.

Upvotes: 2

Related Questions