Collectives™ on Stack Overflow
Find centralized, trusted content and collaborate around the technologies you use most.
Learn more about Collectives
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Learn more about Teams
How can I make this work?
curl -XPOST 'http://localhost:9290/location/place' -d '{"geoloc": {"lat": "38.1899", "lon": "-76.5087"}, "longitude": "-76.5087", "admin_name1": "Maryland", "admin_name2": "St. Mary's", "admin_name3": "", "postal_code": "20692", "admin_code3": "", "country_code": "US", "admin_code1": "MD", "latitude": "38.1899", "admin_code2": "037", "accuracy": null, "place_name": "Valley Lee"}'
The '
in Mary's
is causing this to fail. I am running it from a file like cat curl-cmd.txt | sh
but it won't work from the command line either. I've tried using \'
and \\'
and \u0027
(the unicode '
)
I'm stuck
I had the same problem. The simplest solution is to escape the apostrophe with a backslash in addition to wrapping it in a set of single quotes. '\''
For your use case, change Mary's
to Mary'\''s
and it should work.
curl -XPOST 'http://localhost:9290/location/place' -d '{"geoloc": {"lat": "38.1899", "lon": "-76.5087"}, "longitude": "-76.5087", "admin_name1": "Maryland", "admin_name2": "St. Mary'\''s", "admin_name3": "", "postal_code": "20692", "admin_code3": "", "country_code": "US", "admin_code1": "MD", "latitude": "38.1899", "admin_code2": "037", "accuracy": null, "place_name": "Valley Lee"}'
An alternate approach is to wrap the POST data (-d
) in double quotes while escaping all nested occurrences of double quotes in the JSON string with a backslash.
curl -XPOST 'http://localhost:9290/location/place' -d "{\"geoloc\": {\"lat\": \"38.1899\", \"lon\": \"-76.5087\"}, \"longitude\": \"-76.5087\", \"admin_name1\": \"Maryland\", \"admin_name2\": \"St. Mary's\", \"admin_name3\": \"\", \"postal_code\": \"20692\", \"admin_code3\": \"\", \"country_code\": \"US\", \"admin_code1\": \"MD\", \"latitude\": \"38.1899\", \"admin_code2\": \"037\", \"accuracy\": null, \"place_name\": \"Valley Lee\"}"
–
–
–
–
Rule Of Thumb: In case you want explicitly representing single quote or double quotes in your string on bash, Use backslash (\
) depends on your String Wrapper (should be in the same type). The backslash (\
) character is used to escape characters that otherwise have a special meaning, such as newline, backslash itself, or the quote character.
Examples:
-Double Quote Example - Use \"
in case you want to print on bash She said "Yes I Do"
echo "She said \"Yes I Do\""
#output:
She said "Yes I Do"
echo 'she said "Yes I Do"'
#output:
She said "Yes I Do"
-Single Quote example - Use '\''
in case you want to print on bash My Daughter's dog likes cat treats
echo "My Daughter's dog likes cat treats"
#output:
My Daughter's dog likes cat treats
echo 'My Daughter'\''s dog likes cat treats'
#output:
My Daughter's dog likes cat treats
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.