У меня есть входной файл ниже 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.