bash 循環中睡眠時間不斷增加?

bash 循環中睡眠時間不斷增加?

我想在 bash 中有一個 while 循環,如下所示:

while read i
do
    ~/bin/submit_job $i
    sleep N
done

但我希望 N insleep 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

相關內容