mtime - script bash file



Emulazione di un ciclo do-while in Bash (2)

Invece dei due punti, puoi continuare se ritieni che sia più leggibile

La mia reputazione è troppo bassa per lasciare un commento sul post di Dennis Williamson. Questo metodo simula il modo di fare i loop Do-While che stavo cercando - per testare le condizioni dopo le azioni. Ho anche scoperto che posso inserire un incremento dell'indice (se necessario) dopo l'istruzione do, invece di un'istruzione continue.

while 
    check_if_file_present
    #do other stuff
    (( current_time <= cutoff ))
do
    (( index++ ));
done

https://src-bin.com

Qual è il modo migliore per emulare un ciclo do-while in Bash?

Potrei verificare la condizione prima di entrare nel ciclo while , e poi continuare a ricontrollare la condizione nel ciclo, ma questo è un codice duplicato. C'è un modo più pulito?

Pseudo codice del mio script:

while [ current_time <= $cutoff ]; do
    check_if_file_present
    #do other stuff
done

Questo non esegue check_if_file_present se lanciato dopo il tempo di $cutoff e un do-while lo farebbe.


Answer #1

Due soluzioni semplici:

  1. Esegui il tuo codice una volta prima del ciclo while

    actions() {
       check_if_file_present
       # Do other stuff
    }
    
    actions #1st execution
    while [ current_time <= $cutoff ]; do
       actions # Loop execution
    done
    
  2. O:

    while : ; do
        actions
        [[ current_time <= $cutoff ]] || break
    done
    




do-while