У меня есть основной сценарий 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" }