bash 循环中睡眠时间增加吗?

bash 循环中睡眠时间增加吗?

我想在 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

相关内容