bash Script executando apenas os 2 primeiros comandos curl e parando depois

bash Script executando apenas os 2 primeiros comandos curl e parando depois

Eu tenho um arquivo de texto que possui poucos URLs

dados de vendas.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

e um script bash como abaixo:

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 está executando apenas os dois primeiros comandos curl e parando abruptamente. Estou executando isso em um servidor Linux usando uma conexão ssh com essa caixa. Como posso garantir que todos os comandos curl sejam executados de maneira sequencial e não apenas os dois primeiros. Eu tenho que extrair dados muito maiores que terão 12 comandos curl, quero executá-los de maneira sequencial sem o tempo limite do script.

Alguém pode fornecer alguma orientação sobre isso, por favor?

Responder1

Então você tem um monte de Bashismo neste script. Em geral, é melhor usar o POSIX, a menos que seja realmente necessário. Aqui está um exemplo:

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

informação relacionada