Existe o while condition; do ...; done
loop conhecido , mas existe um do... while
loop de estilo que garante pelo menos uma execução do bloco?
shell
control-flow
Shawn J. Goff
fonte
fonte
Respostas:
Uma versão muito versátil de a
do ... while
possui esta estrutura:Um exemplo é:
Como é (sem valor definido
i
), o loop é executado 20 vezes.UN-Comentando a linha que define
i
16i=16
, o loop é executado 4 vezes.Por
i=16
,i=17
,i=18
ei=19
.Se i estiver definido como (digamos 26) no mesmo ponto (o início), os comandos ainda serão executados na primeira vez (até que o comando loop break seja testado).
O teste por um tempo deve ser verdadeiro (status de saída 0).
O teste deve ser revertido para um loop até, ou seja: seja falso (o status de saída não 0).
Uma versão POSIX precisa de vários elementos alterados para funcionar:
fonte
set -e
algo que falhe dentro do bloco de condições while não interromperá a execução: por exemploset -e; while nonexistentcmd; true; do echo "SHiiiiit"; exit 3; done
- -> merda acontece. Portanto, se você usar isso, precisará ter muito cuidado com o tratamento de erros, ou seja, encadear todos os comandos&&
!Não há um loop de fazer ... enquanto ou fazer ... até, mas a mesma coisa pode ser realizada assim:
por até:
fonte