передача значений с пробелами в команде curl с помощью POST - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь передать значения с пробелами в методе curl POST.Я направляю значения через текстовый файл.Команда POST не позволяет мне передавать значения с пробелами, используя цикл for, но когда я передаю его без цикла while, он принимает значение безо всяких ошибок.

Ниже приведены команды

Этоотлично работает

curl -d '{"name": "equity calculation support", "email": "email@test.com"}' -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Accept: application/json" -X POST http://localhost:3000/api/teams
{"message":"Team created","teamId":103}

при использовании цикла while и IFS он не принимает значения с пробелами:

while IFS= read -r line ; do curl -d '{"name": "'$line'"}' -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -H "Accept: application/json" -X POST 'http://localhost:3000/api/teams'; done < /tmp/group.txt

Файл group.txt содержит значения.

1 Ответ

0 голосов
/ 22 октября 2018

Вы не цитируете расширение $line:

while IFS= read -r line ; do
  curl -d '{"name": "'"$line"'"}' \ 
    -H "Authorization: Basic YWRtaW46YWRtaW4=" \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -X POST 'http://localhost:3000/api/teams'
done < /tmp/group.txt

Однако лучше дать инструменту, подобному jq, создать JSON, чтобы гарантировать, что любые символы в $line который должен быть экранирован для получения правильного JSON do, действительно, должен быть экранирован.

while IFS= read -r line; do
  d=$(jq -n --argjson x "$line" '{name: $x}')
  curl -d "$d" ...
done < /tmp/group.txt

Похоже, что JSON, который вы хотите создать, поместится в одну строку, так что вы также можете обработать все /tmp/group.txt с помощью одного вызова jq и передачи его вывода в ваш цикл.

jq -c -R '{name: .}' | while IFS= read -r line; do
  curl -d "$line" ...
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...