Eu tenho temp.txt
o arquivo de entrada abaixo que preciso postar usando 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}"
}
Abaixo está como estou obtendo o arquivo e publicando-o no servidor. Tudo funciona bem sem problemas.
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}'
Agora estou tentando postar a solicitação curl acima para vários, clientId's
conforme mostrado no meu temp.txt
arquivo acima. Tenho uns 10 diferentes clientId's
para os quais quero postar o mesmo json, mas para cada um diferente clientId
.
Existe alguma maneira de tornar isso genérico o suficiente para que ele possa ler clientId's
algum outro arquivo, digamos - clientIds.txt
que terá uma lista de todos clientId's
e então poderá postar cada json clientId
no servidor?
Posso ter conteúdo em clientIds.txt
arquivo como -
1234
9812
6751
2181
Agora devo fazer um json assim para cada um clientId
e publicá-lo no servidor. Isso é possível por acaso? Posso ter temp.txt
o arquivo como modelo onde clientId
o campo pode ser preenchido a partir do clientIds.txt
arquivo e então podemos publicá-lo no servidor, mas não tenho certeza de como podemos fazer isso no shell script?
Para ID do cliente: 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}"
}
Para ID do cliente: 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}"
}
Para ID do cliente: 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}"
}
Atualizar
Eu tentei algo assim no meu script bash, mas não consigo fazer funcionar porque estou confuso em algumas coisas. Como posso substituir meu arquivo json de modelo para cada clientId e depois postar esse json no servidor usando 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
Responder1
Você poderia criar um arquivo bash que percorre essa lista:
#!/bin/bash
for word in $(< clientIds.txt)
do
echo "curl $word"
done
substitua o echo curl
comando pelo seu comando curl de trabalho, mas o$palavravariável é a próximaID do Clienteem ordem
Ou apenas executei esse bloco de código diretamente no CLI.