Скрипт bash выполняет только первые 2 команды curl и останавливается после этого

Скрипт bash выполняет только первые 2 команды curl и останавливается после этого

У меня есть текстовый файл, в котором есть несколько URL-адресов.

salesData.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

и скрипт bash, как показано ниже:

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

Этот скрипт запускает только первые две команды curl и резко останавливается. Я запускаю его на сервере Linux, используя ssh-подключение к этому ящику. Как мне убедиться, что все команды curl выполняются последовательно, а не только первые две? Мне нужно извлечь гораздо больше данных, которые будут содержать 12 команд curl, я хочу выполнить их последовательно без тайм-аута скрипта.

Может ли кто-нибудь дать какие-либо рекомендации по этому вопросу?

решение1

Итак, в этом скрипте куча Bashism. В общем, лучше придерживаться POSIX, если только это не действительно необходимо. Вот пример:

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

Связанный контент