bash loop em um tempo de sono crescente?

1

Eu gostaria de ter um loop while no bash assim:

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

Mas gostaria que N em sleep N fosse curto no início e depois aumentasse progressivamente após os primeiros loops. Algo como um segundo para os primeiros 8, em seguida, aumentar em segundos como este:

 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 
 ...

Alguma idéia?

    
por 719016 07.02.2012 / 12:33

1 resposta

3

Testado e funcionando:

#/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
    
por 07.02.2012 / 13:08

Tags