
У меня есть текстовый файл, в котором есть несколько 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