Как отправить JSON как переменную с помощью bash curl?

Я пытаюсь отправить POST-запрос с помощью curl, но я хотел бы сохранить данные json в переменной, чтобы повторно отправить их в случае возникновения ошибки. Я использовал этот код:

jsonvariable="{"ora" : "value1", "temp" : "value2", "rh" : "value3", "lat" : "value4", "longi" : "value5"}"


curl -X POST -H "Content-Type: application/json" -d '$jsonvariable' http://localhost:8080/updates

, но формат после опции -d неверен. Вы можете мне помочь?

пс. этот код:

curl -X POST -H "Content-Type: application/json" -d '{"ora" : "value1", "id" : "value2", "temp" : "value3","rh" : "value4", "lat" : "value5", "longi" : "value6"}' http://localhost:8080/updates

не дает ошибок вместо

редактировать:

этот работает:

jsonvariable="{\"ora\":\"value1\",\"id\":\"value2\",temp\":\"value2\",\"rh\":\"value3\",\"lat\":\"value4\",\"longi\":\"value5\"}"

curl -H "Content-Type: application/json" -d "$jsonvariable" http://localhost:8080/updates
3
задан 2 August 2019 в 20:38

1 ответ

Вы использовали одинарные кавычки, которые препятствуют тому, чтобы переменная была расширена. Используйте двойные кавычки вместо этого:

curl -H "Content-Type: application/json" -d "$jsonvariable" http://localhost:8080/updates

Если Ваше переменное содержание содержит двойные кавычки, можно заключить в кавычки им с, например, обратным косым чертам.

Можно опустить -X POST здесь, потому что POST является методом по умолчанию при определении данных для отправки с -d.

Дополнительные материалы для чтения при заключении в кавычки в bash: Как я ввожу файл или каталог со специальными символами на его имя?

3
ответ дан 1 December 2019 в 16:15

Другие вопросы по тегам:

Похожие вопросы: