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