
Ich habe eine Textdatei mit einigen URLs
Verkaufsdaten.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
und ein Bash-Skript wie unten:
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
Dieses Skript führt nur die ersten beiden Curl-Befehle aus und wird dann abrupt gestoppt. Ich führe es auf einem Linux-Server aus, indem ich eine SSH-Verbindung zu dieser Box herstelle. Wie kann ich sicherstellen, dass alle Curl-Befehle nacheinander ausgeführt werden und nicht nur die ersten beiden? Ich muss viel größere Datenmengen abrufen, die 12 Curl-Befehle umfassen werden. Ich möchte sie nacheinander ausführen, ohne dass das Skript abläuft.
Kann mir bitte jemand einige Hinweise hierzu geben?
Antwort1
Sie haben also eine Menge Bashismus in diesem Skript. Im Allgemeinen ist es am besten, bei POSIX zu bleiben, es sei denn, es ist wirklich nötig. Hier ist ein Beispiel:
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