我想在 bash 中有一个像这样的 while 循环:
while read i
do
~/bin/submit_job $i
sleep N
done
但我希望 N 在sleep N
开始时很短,然后在前几个循环后逐渐增加。例如前 8 个循环为一秒,然后以秒为单位增加,如下所示:
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