Изменить файл шаблона на лету и опубликовать его на сервере с помощью curl?

Изменить файл шаблона на лету и опубликовать его на сервере с помощью curl?

У меня есть входной файл ниже temp.txt, который мне нужно опубликовать с помощью curl -

{
  "query":"\n{\n  data(clientId: 1234, filters: [{key: \"o\", value: 100}], key: \"world\") {\n    title\n    type\n    pottery {\n      text\n      pid\n      href\n      count\n      resource\n    }\n  }\n}"
}

Ниже показано, как я получаю файл и размещаю его на сервере. Все работает отлично, без каких-либо проблем.

curl 'url' \
  -H 'Accept-Encoding: gzip, deflate, br' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Connection: keep-alive' -H 'DNT: 1' \
  -H 'Origin: url' \
  --data-binary "@/Users/david/Downloads/temp.txt" \
  --compressed \
  --silent \
  --output /dev/null \
  --write-out '%{http_code}'

Теперь я пытаюсь опубликовать вышеприведенный запрос curl для нескольких, clientId'sкак показано в моем temp.txtфайле выше. У меня есть около 10 разных clientId's, для которых я хочу опубликовать тот же json, но для каждого разного clientId.

Есть ли способ сделать это достаточно универсальным, чтобы он мог читать, clientId'sскажем, из какого-то другого файла, clientIds.txtв котором будет список всех данных clientId's, а затем он мог бы отправлять каждый JSON-файл clientIdна сервер?

Я могу иметь содержимое в clientIds.txtфайле как -

1234
9812
6751
2181

Теперь мне нужно сделать json для каждого clientIdи отправить его на сервер. Возможно ли это сделать случайно? Я могу иметь temp.txtфайл в качестве шаблона, где clientIdполе может быть заполнено из clientIds.txtфайла, а затем мы можем отправить его на сервер, но я не уверен, как мы можем сделать это в скрипте оболочки?

Для идентификатора клиента: 9812

{
   "query":"\n{\n  data(clientId: 9812, filters: [{key: \"o\", value: 100}], key: \"world\") {\n    title\n    type\n    pottery {\n      text\n      pid\n      href\n      count\n      resource\n    }\n  }\n}"
}

Для clientId: 6751

{
   "query":"\n{\n  data(clientId: 6751, filters: [{key: \"o\", value: 100}], key: \"world\") {\n    title\n    type\n    pottery {\n      text\n      pid\n      href\n      count\n      resource\n    }\n  }\n}"
}

Для идентификатора клиента: 2181

{
   "query":"\n{\n  data(clientId: 2181, filters: [{key: \"o\", value: 100}], key: \"world\") {\n    title\n    type\n    pottery {\n      text\n      pid\n      href\n      count\n      resource\n    }\n  }\n}"
}

Обновлять

Я попробовал что-то вроде этого в моем скрипте bash, но не могу заставить его работать, так как я запутался в нескольких вещах. Как мне заменить мой шаблонный файл json для каждого clientId, а затем отправить этот json на сервер с помощью curl -

while IFS= read -r line; do
    # this below line isn't working
    cat temp.txt | sed 's/clientId:[^ ]*/clientId:$line/'
    # and how should I use new json to post curl
done < clientIds.txt

решение1

Вы можете создать bash-файл, который будет проходить по этому списку:

#!/bin/bash
for word in $(< clientIds.txt)
do
    echo "curl $word"
done

замените echo curlкоманду на вашу рабочую команду curl, но$словопеременная - это следующаяID клиентачтобы

Или просто запустите этот блок кода непосредственно в cli.

Связанный контент