Je veux écrire un script Bash pour traiter du texte, ce qui peut nécessiter une boucle while.
Par exemple, une boucle while en C:
int done = 0;
while(1) {
...
if(done) break;
}
Je veux écrire un script Bash équivalent à celui. Mais ce que j’ai l'habitude d'utiliser et comme tous les exemples classiques que j'ai lus l'ont montré, c'est ceci:
while read something;
do
...
done
Il n'offre aucune aide sur la façon de faire while(1){}
et break;
, qui est bien défini et largement utilisé en C, et je n'ai pas à 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 dans bash
.
done=0
while : ; do
...
if [ "$done" -ne 0 ]; then
break
fi
done
:
est la commande no-op; son état de sortie est toujours 0, la boucle s'exécute jusqu'à ce que done
reçoive une valeur non nulle.
Il existe de nombreuses façons de définir et de tester la valeur de done
afin de sortir de 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