
Tengo un archivo de texto que tiene pocas URL.
datosventas.txt
http://localhost:9380/run?startDate=2018-12-01&endDate=2018-12-31
http://localhost:9380/run?startDate=2018-10-01&endDate=2018-10-31
http://localhost:9380/run?startDate=2018-09-01&endDate=2018-09-30
http://localhost:9380/run?startDate=2018-08-01&endDate=2018-08-31
y un script bash como se muestra a continuación:
mapfile -t salesData < salesData.txt
i=0
echo 'hii'${i};
while [ ${i} -lt ${#salesData[@]} ] ; do
echo "Iteration Number is " ${i} >> audit.txt
curl -s --max-time 3600 ${salesData[${i}]}
sleep 30
echo "Successfully completed curl"
((i++))
done
Este script solo ejecuta los dos primeros comandos curl y se detiene abruptamente. Estoy ejecutando esto en un servidor Linux usando una conexión ssh a ese cuadro. ¿Cómo puedo asegurarme de que todos los comandos curl se ejecuten de forma secuencial y no solo los dos primeros? Tengo que extraer datos mucho más grandes que tendrán 12 comandos curl, quiero ejecutarlos de manera secuencial sin que se agote el tiempo de espera del script.
¿Alguien puede proporcionar alguna orientación sobre esto, por favor?
Respuesta1
Entonces tienes mucho bashismo en este guión. En general, es mejor seguir con POSIX a menos que sea realmente necesario. Aquí hay un ejemplo:
n1=0
while read each
do
echo "Iteration Number is $n1" >> audio.txt
curl -s --max-time 3600 "$each"
n1=$(( n1 + 1 ))
done < salesData.txt