bashスクリプトは最初の2つのカールコマンドのみを実行してから停止します。

bashスクリプトは最初の2つのカールコマンドのみを実行してから停止します。

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つのカールコマンドのみを実行し、突然停止します。 SSHを使用してボックスに接続してLinuxサーバーで実行しました。最初の2つのコマンドだけでなく、すべてのカールコマンドが順次実行されるようにするにはどうすればよいですか? 12個のカールコマンドで大きなデータを抽出する必要があり、スクリプトがタイムアウトしないように順番に実行したいと思います。

誰でも指示を提供できますか?

答え1

だからこの台本には屈辱感がたくさん入っています。一般的に言えば、必ずしも必要でない限り、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

関連情報