Comment sortir d’une boucle dans Bash?

Je veux écrire un script Bash pour traiter du texte, ce qui peut nécessiter une boucle while.

Par exemple, une boucle while dans C:

int done = 0; while(1) { ... if(done) break; } 

Je veux écrire un script Bash équivalent à cela. Mais ce que j’ai l’habitude d’utiliser et comme tous les exemples classiques que j’ai lus ont montré:

 while read something; do ... done 

Il n’offre aucune aide sur la façon de faire while(1){} et de break; , qui est bien défini et largement utilisé dans C, et je n’ai pas besoin de lire les données pour stdin.

Quelqu’un pourrait-il m’aider avec un équivalent Bash du code C ci-dessus?

Ce n’est pas si différent en bash .

 done=0 while : ; do ... if [ "$done" -ne 0 ]; then break fi done 

: est la commande no-op; son statut de sortie est toujours 0, donc la boucle s’exécute jusqu’à ce que le mot done ait une valeur différente de zéro.


Il existe plusieurs façons de définir et de tester la valeur de done afin de quitter la boucle. celui que je montre ci-dessus devrait fonctionner dans n’importe quel shell compatible POSIX.

 while true ; do ... if [ something ]; then break fi done