2015-08-20 13 views
9

Jak mogę to ułatwić?CURL escape single quote

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"}' 

' w Mary's powoduje to się nie powiedzie. Używam go z pliku takiego jak cat curl-cmd.txt | sh, ale nie będzie działać również z wiersza poleceń. Próbowałem za pomocą \' i \\' i \u0027 (Unicode ')

utknąłem

+0

http://stackoverflow.com/a/18612754/1745672 – Mihai

+0

Prawo, jak powiedziałem w moim pytaniu, próbowałem tego. – mikeb

+0

DAmn Im ślepy .. – Mihai

Odpowiedz

14

miałem ten sam problem. Najprostszym rozwiązaniem jest uciec od apostrofu z ukośnikiem odwrotnym, a także zawinąć go w zestaw pojedynczych cytatów. '\''

W przypadku użycia zmień Mary's na Mary'\''s i powinno działać.

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"}' 

Alternatywnym podejściem jest owinięcie danych post (-d) w cudzysłowach uciekając wszystkie zagnieżdżone wystąpienia cudzysłowach w ciągu JSON odwrotnym ukośnikiem.

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\"}" 
+1

"\ '' działa świetnie! dziękuję :) –

+1

Z jakiegoś powodu potrzebowałem twojego zwariowanego rozwiązania do wywoływania curl z PHP's shell_exec(), nawet jeśli używam '--data-urlencode' Może ma to coś wspólnego ze sposobem, w jaki Linux przetwarza ciąg przed uzyskaniem zwijać? Niepewny. –

+0

Pierwsze rozwiązanie nie działa na konsoli mojego komputera Maca, ponieważ daje taki sam efekt, jak brak możliwości ucieczki. –