Tengo el siguiente temp.txt
archivo 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's
como se muestra en mi temp.txt
archivo anterior. Tengo como 10 diferentes clientId's
para 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's
desde algún otro archivo, por ejemplo, clientIds.txt
que tendrá una lista de todos clientId's
y luego podrá publicar cada json por sí solo clientId
en el servidor?
Puedo tener contenido en clientIds.txt
el archivo como:
1234
9812
6751
2181
Ahora debería crear un json como este para cada uno clientId
y publicarlo en el servidor. ¿Es esto posible hacerlo por casualidad? Puedo tener temp.txt
un archivo como plantilla donde clientId
el campo se puede completar desde clientIds.txt
el 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 curl
comando 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.