¿Modificar el archivo de plantilla sobre la marcha y publicarlo en el servidor usando curl?

¿Modificar el archivo de plantilla sobre la marcha y publicarlo en el servidor usando curl?

Tengo el siguiente temp.txtarchivo de entrada que necesito publicar 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}"
}

A continuación se muestra cómo obtengo el archivo y lo publico en el servidor. Todo funciona bien sin ningún problema.

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}'

Ahora estoy intentando publicar la solicitud curl anterior para múltiples clientId'scomo se muestra en mi temp.txtarchivo anterior. Tengo como 10 diferentes clientId'spara los cuales quiero publicar el mismo json pero para cada uno diferente clientId.

¿Hay alguna manera de hacer que esto sea lo suficientemente genérico como para que pueda leer clientId'sdesde algún otro archivo, por ejemplo, clientIds.txtque tendrá una lista de todos clientId'sy luego podrá publicar cada json por sí solo clientIden el servidor?

Puedo tener contenido en clientIds.txtel archivo como:

1234
9812
6751
2181

Ahora debería crear un json como este para cada uno clientIdy publicarlo en el servidor. ¿Es esto posible hacerlo por casualidad? Puedo tener temp.txtun archivo como plantilla donde clientIdel campo se puede completar desde clientIds.txtel archivo y luego podemos publicarlo en el servidor, pero no estoy seguro de cómo podemos hacer esto en un script de shell.

Para ID de 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 de 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 de 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}"
}

Actualizar

Intenté algo como esto en mi script bash pero no puedo hacerlo funcionar porque estoy confundido en algunas cosas. ¿Cómo puedo reemplazar mi archivo json de plantilla para cada ID de cliente y luego publicar ese json en el 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

Respuesta1

Podrías crear un archivo bash que recorra esa lista:

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

reemplace el echo curlcomando con su comando curl de trabajo, pero el$palabrala variable es la siguienteIdentificación del clienteen orden

O simplemente ejecutó ese bloque de código directamente en la CLI.

información relacionada