команда curl внутри bash-файла не работает - PullRequest
0 голосов
/ 17 января 2019

У меня есть основной сценарий bash, который я хочу использовать для выполнения HTTP-запроса с использованием curl.

Строка, в которой выполняется команда curl, выглядит следующим образом:

echo $(curl -X POST $URL -H \'$HEADERS\' -d \'$data\')

Когда эта строка запускается, я получаю сообщение об ошибке:

"status":415, "error":"Unsupported Media Type", "message":"Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported",

Но если я выполню ту же строку без оператора $(), например:

echo curl -X POST $URL -H \'$HEADERS\' -d \'$data\'

Я получу что-то вроде этого:

curl -X POST localhost:8080/employees -H 'Content-type:application/json' -d '{ "age":"25", "firstName":"Peggy", "lastName":"Ailbert", "role":"Thief" }'

Отлично работает, если скопирован в терминал.

Я хотел бы знать, что не так с кодом.

ПРИМЕЧАНИЯ:

  • Переменные $URL и $HEADERS относятся к .conf и содержат постоянные значения:
URL="localhost:8080/employees"
HEADERS="Content-type:application/json"
  • Переменная $data создается, когда основной bash запускает и содержит случайные значения для ключей, например:
{ "age":"59", "firstName":"Lauree", "lastName":"Inna", "role":"Mage" }

1 Ответ

0 голосов
/ 17 января 2019

Вы не должны иметь \' вокруг своих переменных. Это поместит буквальную одинарную кавычку в этот аргумент.

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

curl -X POST "$URL" -H "$HEADERS" -d "$data"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...