Bash Loops en profondeur

Bash Loops en profondeur
Une boucle se compose d'une ou plusieurs commandes qui s'exécutent à plusieurs reprises jusqu'à ce qu'une condition soit remplie. Pour que cela se produise, les commandes doivent être dans une construction. La construction et ses commandes forment une commande composée. Une commande bash sort avec zéro s'il n'y avait pas de problème. D'un autre côté, il sort avec un nombre supérieur à zéro s'il y avait un problème ou un problème. Le statut de sortie d'une commande composée est celui de sa dernière commande.

Afin de comprendre cet article, le lecteur doit déjà connaître les commandes de bash simples. Toute commande de bash non simple utilisée dans cet article est expliquée. N'oubliez pas que les commandes bash peuvent être écrites dans un fichier texte, et le fichier texte peut s'exécuter en tapant le nom du fichier (précédé de chemin) au terminal, puis en appuyant sur Entrée. N'oubliez pas également de vous permettre d'exécuter le fichier avec quelque chose comme:

Sudo Chmod + x Program_name

Contenu de l'article

  • Bases de boucle de bash
  • Bash Break and Continuer les commandes
  • Exemples de boucle utile
  • Conclusion

Bases de boucle de bash

Bash jusqu'à / boucle
Considérez le code suivant:

Soit n = 0
jusqu'à ["$ n" -eq 5]; faire
Echo $ n
((++ n))
fait

La sortie est:

0
1
2
3
4

Lorsque le programme commence, la variable n est déclarée et zéro lui est affecté. Les deux commandes avant «terminées» sont exécutées 5 fois. ((++ n)) incréments n par 1 pour chaque itération. Notez les positions des mots réservés, «jusqu'à», «faire» et «fait». Les deux commandes sont répétées jusqu'à ce que la condition, [«$ n» -eq 5] soit remplie. Dans la condition, «-eq» signifie «égal à». La condition est que la valeur de n est égale à 5. Notez que les valeurs écho commencent de 0 à 4. En effet, pour chaque itération, l'état de la construction est vérifié, avant que le corps (deux commandes) de la construction ne soit exécuté. Si la condition est fausse, le corps ne serait pas exécuté. Le mot réservé, «fait», doit toujours être tapé sur une nouvelle ligne.

La syntaxe pour la boucle ast / terminée est:

jusqu'à des commandes de test; faire des commands conséquents; fait

Le deuxième point-virgule n'est pas nécessaire si le mot réservé, «fait» est tapé sur une nouvelle ligne.

Si la condition sort avec zéro, ce qui signifie vrai, le corps de la boucle est exécuté. Si la condition sort avec un nombre supérieur à zéro, ce qui signifie faux, le corps de la boucle n'est pas exécuté.

Bouchage de bash while / fait
Cette boucle est similaire à la boucle ast / terminée, sauf que la condition doit être reformulée. Les deux constructions utilisent le mot «do» réservé. Le code suivant produit la même sortie qu'avant:

Soit n = 0
tandis que ["$ n" -lt 5]; faire
Echo $ n
((++ n));
fait

Dans la condition dans le code, «-lt» signifie «moins que». La syntaxe pour la boucle While / Done est:

tandis que les commandes de test; faire des commands conséquents; fait

Boucle de bash pour / faite
Il y a deux syntaxes pour la boucle «pour», qui sont:

pour ((expr1; expr2; expr3)); faire des commandes; fait

et

pour le nom [[en [mots…]]; ] faire des commandes; fait

Le code suivant utilise la première syntaxe pour produire le même résultat, comme ci-dessus:

pour ((n = 0; n < 5; ++n)); do
Echo $ n
fait

Dans le ((Commande composée, la première expression initialise la variable n à zéro. L'expression suivante est la condition while. La dernière expression de la commande composée à double parenthèses est l'expression d'incrément. Ensuite, il y a le corps, qui peut être composé de plus d'une commande, puis «fait».

La deuxième syntaxe est mieux utilisée avec un tableau - voir ci-dessous.

Bash Break and Continuer les commandes

casser
Toutes les itérations (exécution répétée du corps) destinées à une boucle ne doivent pas nécessairement être exécutées. La commande Break peut être utilisée pour arrêter les itérations restantes. Dans le code suivant, les itérations s'arrêtent juste après n équivalent 2.

pour ((n = 0; n < 5; ++n)); do
Echo $ n
if ((n == 2)); alors
casser
Fi
fait

La sortie est:

0
1
2

Dans cette boucle, trois itérations ont eu lieu.

continuer
Une itération peut être ignorée en utilisant la commande Continuer. Le code suivant illustre ceci:

pour ((n = 0; n < 5; ++n)); do
if ((n == 2)); alors
continuer
Fi
Echo $ n
fait

La sortie est:

0
1
3
4

L'itération pour afficher 2 a été ignorée.

Les commandes Break and Continuer peuvent également être utilisées dans les boucles jusqu'à / terminées et bien que / terminées.

Exemples de boucle utile

Exemple de boucle jusqu'à / fait
La commande pour créer un fichier texte vide est touchée. Le script suivant créera des fichiers texte vides dans le répertoire de travail actuel, jusqu'à ce que le nombre de fichiers créés soit 4:

Laisse i = 1
file = "myfile"
jusqu'à [$ i -eq 5]; faire
filename = "$ file $ i.SMS"
toucher $ nom de fichier
((++ i))
fait

Les noms des fichiers créés doivent être MyFile1.txt, myfile2.txt, myfile3.txt et myfile4.SMS.

Le seul point-virgule du code peut être omis si «faire» est tapé dans la ligne suivante.

Exemple de boucle pendant / fait
La commande pour créer un répertoire vide est mkdir. Le script suivant créera des répertoires vides dans le répertoire de travail actuel jusqu'à ce que le nombre de répertoires créés soit 4:

i = 1
dir = "mydir"
tandis que [$ i -lt 5]; faire
dirname = "$ dir $ i"
mkdir $ dirname
((++ i))
fait

Le nom des répertoires créés devrait être MyDir1, MyDir2, MyDir3 et MyDir4.

Le seul point-virgule du code peut être omis si «faire» est tapé dans la ligne suivante.

pour l'exemple de boucle
La deuxième syntaxe pour la boucle forte mentionnée ci-dessus est:

pour le nom [[en [mots…]]; ] faire des commandes; fait

Cette syntaxe est mieux utilisée avec une liste. En termes simples, la syntaxe est:

pour la variable dans la liste; faire des commandes; fait

La liste peut être un tableau. La commande suivante lit une ligne de texte d'entrée du terminal dans le tableau Arr:

Lire Arr

Au fur et à mesure que le script est en cours d'exécution, lorsqu'il atteindra cette commande, elle s'arrêtera (avec un curseur clignotant) pour que l'utilisateur entre en entrée. Si l'utilisateur type:

un, deux, trois

Dans une ligne et appuyez sur Entrée, alors le premier élément du tableau aurait le mot «un», le second aurait le mot «deux», et le troisième aurait «trois». Notez que les valeurs d'entrée ont été séparées par des espaces.

Le code suivant utilise la deuxième syntaxe à boucle pour lire et afficher une entrée dans le script:

Echo "Tapez les valeurs et appuyez sur Entrée:"
Lire Arr
pour var dans $ arr; faire
Echo $ var
fait

Si l'entrée était:

un, deux, trois

Alors la sortie serait:

un
deux
trois

Le seul point-virgule du code peut être omis si «faire» est tapé dans la ligne suivante.

Commande Bash Select

La commande select n'est pas vraiment une boucle. Cependant, cela implique une itération, qui n'est pas codée par le programmeur. En termes simples, la syntaxe de commande Select est:

Sélectionnez l'élément dans [Liste]
faire
[Commandes]
fait

Ici, «sélectionner», «in», «do» et «fait» sont des mots réservés. Une utilisation de la commande SELECT consiste à afficher les éléments de la liste au terminal. Le script suivant illustre ceci:

Sélectionnez l'article en banane, citron, orange, poire, ananas
faire
casser
fait

Notez l'utilisation de la commande Break. La sortie est:

1) banane,
2) citron,
3) Orange,
4) poire,
5) Ananas
#?

La liste se compose des valeurs de la banane, du citron, de l'orange, de la poire et de l'ananas. Ces valeurs ont été affichées et numérotées. Le symbole "#?»(Et le curseur clignotant à côté) s'attend à ce que l'utilisateur tape quelque chose et appuyez sur la touche Entrée. Tapez n'importe quoi, puis appuyez sur la touche Entrée et termine enfin l'exécution du script.

Notez que la liste a été affichée comme un menu, numéroté, pour la sortie. Avec cela, l'utilisateur peut sélectionner un élément dans le menu en tapant le numéro correspondant, à côté de «#?», Puis appuyez sur la touche Entrée. Le script suivant illustre comment orange est sélectionné en tapant le numéro 3:

Sélectionnez l'article en banane, citron, orange, poire, ananas
faire
Echo $ Répondre
casser
fait

L'affichage de sortie est:

#? 3
alors
3

Conclusion

Une boucle en bash est une construction; Une construction est une commande composée. Le corps de la construction a au moins une commande. À partir de maintenant, Bash n'a que trois boucles, qui sont jusqu'à ce que. Chaque boucle utilise le mot réservé «do». Une fois que la condition a été tapée, «faire» doit être précédé de «;», ou être tapé dans la ligne suivante du code. Chaque boucle prend une condition. Les boucles de Till / Done et While / Done sont similaires. La principale différence se produit lors du codage de la condition.

La commande select est une commande composée, mais ce n'est pas vraiment une boucle. Il permet à l'utilisateur de sélectionner un élément dans une liste de menu lorsque le script s'exécute de manière interactive.

Les commandes Break and Contise peuvent être utilisées dans une boucle. La commande Break peut être utilisée pour arrêter les itérations. D'un autre côté, la commande continue peut être utilisée pour sauter une itération.

C'est tout ce qu'il y a pour frapper des boucles. La fonction restante à étudier est «Comment coder les conditions?". Cela mérite un tout autre article et ne peut pas être inclus dans celui-ci. Voir l'article sur ce site Web, intitulé «Bash Conditionals Infepth», sur la façon de coder les conditions.

Chrys