
私は次のように bash で while ループを実行したいと思います。
while read i
do
~/bin/submit_job $i
sleep N
done
sleep N
しかし、N in は最初は短くして、最初の数回のループの後に徐々に増やしていきたいと思います。最初の 8 秒間は 1 秒、その後は次のように秒単位で増やします。
1 1 1 1 1 1 1 1 (first 8 iterations)
2 2 2 2 2 2 2 2
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
...
何か案は?
答え1
テスト済みおよび動作中:
#/bin/bash
sleeptime=1
countsleeps=1
maxcount=8
while read i
do
~/bin/submit_job $i
sleep $sleeptime
let countsleeps++
if ((countsleeps>maxcount))
then
countsleeps=1
let sleeptime*=2
if ((sleeptime>2)) ; then let maxcount*=2 ; fi
fi
done