bash Script solo ejecuta los primeros 2 comandos curl y se detiene después

bash Script solo ejecuta los primeros 2 comandos curl y se detiene después

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

información relacionada