Modificar o arquivo de modelo rapidamente e publicá-lo no servidor usando curl?

Modificar o arquivo de modelo rapidamente e publicá-lo no servidor usando curl?

Eu tenho temp.txto 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'sconforme mostrado no meu temp.txtarquivo acima. Tenho uns 10 diferentes clientId'spara 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'salgum outro arquivo, digamos - clientIds.txtque terá uma lista de todos clientId'se então poderá postar cada json clientIdno servidor?

Posso ter conteúdo em clientIds.txtarquivo como -

1234
9812
6751
2181

Agora devo fazer um json assim para cada um clientIde publicá-lo no servidor. Isso é possível por acaso? Posso ter temp.txto arquivo como modelo onde clientIdo campo pode ser preenchido a partir do clientIds.txtarquivo 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 curlcomando 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.

informação relacionada