
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