Передача переменной оболочки в JSON-запрос для curl?

json bash curl

3267 просмотра

3 ответа

Давайте возьмем следующий пример:

curl -i -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "Player.Open", "params":{"item":false}}' \
http://example.com/jsonrpc

Теперь я хочу, чтобы логическое значение «item» было установлено в переменной сценария оболочки, такой как:

 PRIVATE=false
 read -p "Is this a private? (y/[n]) " -n 1 -r
 if [[ $REPLY =~ ^[Yy]$ ]]; then
     PRIVATE=true
 fi

И я хочу передать значение PRIVATE в пункт. Я попробовал все, но не повезло. Кто-нибудь может пролить свет?

Автор: iOSGuy Источник Размещён: 13.11.2019 11:34

Ответы (3)


3 плюса

Вы можете сделать это следующим образом:

curl -i -X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "method": "Player.Open", "params":{"item":'"$PRIVATE"'}}' \
http://example.com/jsonrpc
Автор: Wenbing Li Размещён: 14.08.2014 03:30

1 плюс

Вместо существующей -d ... строки выше, вы можете попробовать следующее:

-d "{\" jsonrpc \ ": \" 2.0 \ ", \" method \ ": \" Player.Open \ ", \" params \ ": {\" item \ ": $ PRIVATE}}" \

То есть: при использовании речевых меток в двойных кавычках (") bash подставляет значения для переменных, на которые ссылается $ LIKE_THIS (не в случае с одинарными кавычками, которые вы использовали). Недостатком является то, что вам затем нужно экранировать любые двойные кавычки в самой строке ( используя обратную косую черту, как указано выше).

Автор: GUESTGUESTGUEST Размещён: 14.08.2014 03:23

0 плюса

Эта мерзость тоже работает.

$ npm run script -- madrid

# script
json='{"city":"'"$1"'"}'
curl -X POST -d $json http://localhost:5678/api/v1/weather
Автор: Karl Pokus Размещён: 09.04.2017 07:28
Вопросы из категории :
32x32