Il y a la while condition; do ...; done
boucle bien connue , mais y a-t-il une do... while
boucle de style qui garantit au moins une exécution du bloc?
shell
control-flow
Shawn J. Goff
la source
la source
Réponses:
Une version très polyvalente d'un
do ... while
a cette structure:Un exemple est:
En l'état (aucune valeur définie pour
i
), la boucle s'exécute 20 fois.UN-Commentant la ligne qui prend la valeur
i
16i=16
, la boucle est exécutée 4 fois.Pour
i=16
,i=17
,i=18
eti=19
.Si i est défini sur (disons 26) au même point (le début), les commandes sont toujours exécutées la première fois (jusqu'à ce que la commande de rupture de boucle soit testée).
Le test pendant un certain temps doit être véridique (état de sortie de 0).
Le test doit être inversé pour une boucle jusqu'à, c'est-à-dire: être faux (état de sortie non 0).
Une version POSIX a besoin de plusieurs éléments modifiés pour fonctionner:
la source
set -e
quelque chose qui échoue dans le bloc de conditions while ne va pas arrêter l'exécution: par exempleset -e; while nonexistentcmd; true; do echo "SHiiiiit"; exit 3; done
-> shit se produit. Donc, si vous utilisez cela, vous devez être très prudent avec la gestion des erreurs, c'est-à-dire enchaîner toutes les commandes avec&&
!Il n'y a pas de boucle do ... while ou do ... until, mais la même chose peut être accomplie comme ceci:
jusqu'à:
la source