
URLがほとんどないテキストファイルがあります
販売データ.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
このスクリプトは最初の 2 つの curl コマンドのみを実行しており、突然停止します。私は Linux サーバーで、そのボックスへの ssh 接続を使用してこれを実行しています。最初の 2 つだけでなく、すべての 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