Вставьте переменную bash (позиционный параметр) в GraphQL cURL с JSON Payload - PullRequest
0 голосов
/ 08 октября 2019

Я создаю псевдоним в bash, который доставляет GraphQL cURL, который содержит полезную нагрузку JSON. В эту полезную нагрузку я хотел бы включить параметр / переменную bash ($ 1), однако запрос не выполняется, когда я использую переменную, однако он успешен, когда я указываю значение или идентификатор в полезной нагрузке.

capi_cmd () {
        curl 'https://example.com/content/api' \
        -H 'Accept-Encoding: gzip, deflate, br' \
        -H 'Content-Type: application/json' \
        -H 'Accept: application/json' \
        -H 'Connection: keep-alive' \
        -H 'DNT: 1' -H 'Origin: https://example.com' --data-binary \
        '{"query":"query($InputStr:String!) {\n  getInfoById(Id: $InputStr) {\n    details {\n      images {\n        url\n      }\n    }\n  }\n}\n","variables":{"InputStr": "$1"}}' \
        --compressed \
        jq | grep -Eo '(http|https)://[^\"]+' | xargs -n1 curl -O
}

Любая помощь, которая может помочь мне решить эту проблему, будет принята с благодарностью :)

Спасибо,

Стивен.

1 Ответ

1 голос
/ 08 октября 2019

Ваш JSON заключен в одинарные кавычки.

Внутри одинарных кавычек все сохраняется буквально, без исключения.

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

'...before'"${variable}"'after...'

...