Trois types de boucles sont utilisés dans bash à des fins diverses. Ce sont des boucles pour, pendant et jusqu’à. Les différentes utilisations de ces boucles sont expliquées à l’aide de 30 exemples différents dans cet article.
Utilisations des boucles Bash:
- Utilisation de la boucle for pour lire des éléments dans une liste
- Utilisation de la boucle for pour lire un tableau
- Utilisation de la boucle for pour lire une liste de valeurs de chaîne avec des espaces
- Utilisation de la boucle for dans {START..FIN..INCRÉMENT} plage
- Utilisation de la boucle for dans {START..FIN..INCRÉMENT} plage allant en arrière
- Utilisation de la boucle for avec 3 parties et compteur de conditions
- Utilisation de la boucle for avec 3 parties et plusieurs conditions et actions avec une virgule
- Utilisation de la boucle for infinie
- Utilisation de la boucle for avec pause conditionnelle et continuer
- Utilisation de la boucle for pour lire les noms de fichiers en boucle pour lire la sortie de la commande find
- Utilisation de la boucle for pour lire récursivement les noms de fichiers d’un répertoire
- Utilisation de la boucle for pour lire récursivement les noms de fichiers d’un répertoire avec la condition
- Exécution de la boucle jusqu’à ce que le le fichier existe
- Utilisation de la boucle for en fonction de la sortie de la commande liste de paquets
- Utilisation de la boucle for pour lire chaque ligne d’un fichier
- Utilisation de la boucle for pour lire chaque ligne d’un fichier en fonction d’une correspondance conditionnelle
- Utilisation de la boucle while avec un compteur
- Utilisation de la boucle while avec une entrée utilisateur et quitter lors de la sélection de quitter dans un menu
- combinaison de boucles while avec getopts
- Utilisation de la boucle until avec un compteur
- Terminez la boucle until en fonction de l’entrée utilisateur
- Utilisation de boucles while imbriquées
- Utilisation de la boucle until pour dormir / attendre la tâche d’arrière-plan démarré dans le script
- Utilisation de la boucle while pour lire le pid à partir de la sortie ps qui n’est pas terminée
- Recherche d’une chaîne dans un fichier à l’aide de la boucle et sortie
- Combinaison de bash avec curl pour évaluer les données de l’URL
- Lecture des données d’un port envoyé par netcat à l’aide de la boucle while
- URL ping à l’aide de la boucle
- En cours d’exécution top en mode batch en utilisant une boucle et une sortie d’enregistrement
- Utilisation de la boucle for pour lire des éléments dans une liste
- Utilisation de la boucle for pour lire un tableau
- Utilisation de la boucle for pour lire une liste de valeurs de chaîne avec des espaces
- En utilisant la boucle for dans {START..FIN..INCRÉMENT} range
- En utilisant la boucle for dans {START..FIN..INCRÉMENT } range aller en arrière
- Utilisation de la boucle for avec 3 parties et du compteur de conditions
- Utiliser une boucle for avec 3 parties et plusieurs conditions et actions avec une virgule
- En utilisant une boucle infinie
- Utilisation de la boucle for avec saut conditionnel et continuer
- Utilisation de la boucle for pour lire les noms de fichiers par globbing
- Utiliser la boucle for pour lire la sortie de la commande find
- Utilisation de la boucle for pour lire récursivement les noms de fichiers d’un répertoire
- L’utilisation de la boucle for pour lire récursivement les noms de fichiers d’un répertoire avec la condition
- Exécuter la boucle jusqu’à ce que le fichier existe
- Utilisation de la boucle for basée sur la sortie de la commande liste de paquets
- Utilisation de la boucle for pour lire les lignes d’un fichier
- Utilisation de la boucle for pour lire les lignes d’un fichier avec une correspondance conditionnelle
- Utilisation de la boucle while avec un compteur
- Utilisation de la boucle while avec entrée utilisateur et quitter lorsque vous sélectionnez quitter dans le menu
- Combinaison de boucles while avec getopts
- Utilisation de la boucle until avec un compteur
- Terminer jusqu’à la boucle en fonction de l’entrée utilisateur
- En utilisant des boucles while imbriquées
- Utilisation de la boucle until pour dormir / attendre la tâche d’arrière-plan démarrée dans le script
- Utilisation de la boucle while pour lire le pid à partir de la sortie ps qui n’est pas terminée
- Rechercher une chaîne dans un fichier à l’aide de loop et quitter
- Combinez bash avec curl pour évaluer les données de l’URL
- Lecture des données d’un port envoyé par netcat à l’aide de la boucle while
- URL ping en utilisant une boucle
- Exécution de top en mode batch à l’aide d’une sortie de boucle et d’enregistrement
- Conclusion
Utilisation de la boucle for pour lire des éléments dans une liste
L’utilisation la plus simple de la boucle ‘for’ consiste à lire une liste de chaînes ou de données numériques. La liste des données numériques est itérée en utilisant la boucle for-in dans l’exemple suivant. Ici, quatre nombres seront lus dans la variable,nn à chaque étape de la boucle et imprimés. Créez un fichier bash avec le script suivant et exécutez-le à partir du terminal.
# boucle for-in pour lire une liste de nombres
pour n dans 10 11 17 25
faire
# Imprimer chaque nombre
echo « Le nombre estnn »
terminé
Sortie:
Exécutez le script.
La sortie suivante apparaîtra après l’exécution du script.
Aller en haut
Utilisation de la boucle for pour lire un tableau
Toute variable de tableau contient une liste de données qui peuvent être itérées très facilement en utilisant la boucle for-in. L’exemple suivant montre l’utilisation de la boucle for-in pour lire un tableau de données de chaîne. Ici, chaque valeur de tableau va récupérer dans la variable,languagelanguage et imprimer un message basé sur la langue à chaque itération.
languages =(« BASH PERL Python PHP »)
pour le langage dans $languages
do
if
then
echo « languagelanguage est un langage de programmation web »
else
echo »languagelanguage est un langage de script »
fi
fait
Sortie :
Exécutez le script.
La sortie suivante apparaîtra après l’exécution du script.
Aller en haut
Utilisation de la boucle for pour lire une liste de valeurs de chaîne avec des espaces
Lorsqu’une liste d’une chaîne est lue par une boucle for-in et qu’une valeur de chaîne contient de l’espace, les valeurs sont divisées en mots en fonction de l’espace si la valeur de chaîne n’est pas entre guillemets simples ou doubles. L’exemple suivant montre comment une liste de valeurs de chaîne avec de l’espace peut être lue par une boucle for-in. Ici, une valeur de la liste contient de l’espace et elle est imprimée avec l’espace dans la sortie.
# boucle for-in pour lire la liste des chaînes avec espace
pour os dans « Ubuntu » « Linux Mint » « Fedora » « CentOS »
faire
# Imprimer chaque chaîne
echo « Système d’exploitation -osos »
terminé
Sortie:
Exécutez le script.
Ici, la valeur de chaîne, ‘Linux Mint’ est imprimée correctement.
Aller en haut
En utilisant la boucle for dans {START..FIN..INCRÉMENT} range
Une autre utilisation de la boucle for-in consiste à lire le tableau de plages. Dans l’exemple suivant, une boucle for est utilisée pour lire une plage de données de 10 à 30 qui est incrémentée de 5 à chaque étape. Ensuite, le script imprimera les nombres dans la plage qui sont divisibles par 10.
# Lisez une plage en utilisant la boucle for
pour num dans {10..30..5 }
do
# Vérifiez que le nombre est divisible par 10 ou non
if((nnum%10==0 ))
ensuite,
echo « nnum est divisible par 10 »
fi
terminé
Sortie:
Exécutez le script.
La sortie suivante apparaîtra après l’exécution du script.
Aller en haut
En utilisant la boucle for dans {START..FIN..INCRÉMENT } range aller en arrière
La plage de données peut être lue en arrière en utilisant une boucle for-in où la valeur de départ de la plage est supérieure à la valeur de fin de la plage. Dans l’exemple suivant, la plage commencera de 50 et se terminera à 30. La valeur dennum sera décrémentée de 10 à chaque étape de la boucle. Le script imprimera les nombres de la plage qui sont divisibles par 5 et 10.
echo « Les nombres suivants sont divisibles par 5 et 10 »
# Lisez une plage en utilisant la boucle for
pour num dans {50..30..10 }
do
# Vérifiez que le nombre est divisible par 5 et 10 ou non
if((nnum%5==0 && $ num%10==0 ))
alors
echo-n »$num »
fi
fait
echo « Fait »
Sortie :
Exécutez le script.
La sortie suivante apparaîtra après l’exécution du script.
Haut de page
Utilisation de la boucle for avec 3 parties et du compteur de conditions
Bash prend en charge la boucle for avec trois parties comme les autres langages de programmation standard. La première partie contient une initialisation, la deuxième partie contient la condition de terminaison et la troisième partie contient une opération d’incrémentation ou de décrémentation. Cette boucle est principalement utilisée lorsque le nombre d’itérations est défini au préalable. Dans l’exemple suivant, la boucle for itérera 50 fois et calculera la somme de 1 à 50. Le résultat de la somme s’affichera en sortie.
# Initialiser la variable
sum = 0
# La boucle itérera 50 fois
for ((n = 1; n < = 50; n++))
do
# Ajouter la valeur de somme avec la valeur suivante de n
((sum =sumsum +nn))
terminé
# Imprimer le résultat
echo » La somme de 1 à 50 estsumsum »
Sortie :
Exécutez le script.
La somme de 1 à 50 est affichée dans la sortie.
Aller en haut
Utiliser une boucle for avec 3 parties et plusieurs conditions et actions avec une virgule
La boucle For avec trois parties peut être définie avec plusieurs initialisations, conditions de terminaison et actions. L’exemple suivant montre l’utilisation de ce type de boucle. Ici, les variables $x etyy sont initialisées par 5 et 25. La boucle continuera jusqu’à ce que la valeur de $x soit inférieure ou égale à 20 et que la valeur de $y soit supérieure à 5. La valeur dexx augmentera de 5 et la valeur deyy diminuera de 5 à chaque itération de la boucle. La valeur actuelle dexx etyy à chaque étape s’affichera en sortie.
# Boucle itérera en fonction de deux conditions
pour ((x = 5, y = 25; x<=20 && y > 5; x + = 5, y – = 5))
faire
echo « La valeur actuelle de x =xx et y =yy »
terminé
Sortie:
Exécutez le script.
La sortie suivante apparaîtra après l’exécution du script.
Aller en haut
En utilisant une boucle infinie
Lorsqu’une boucle est définie sans aucune condition de terminaison, la boucle fonctionne comme une boucle infinie. L’exemple suivant montre l’utilisation d’une boucle for infinie qui ne contient aucune partie d’initialisation, de terminaison et d’action. Ce type de boucle for est défini par un double point-virgule (;;). Le script suivant continuera la boucle jusqu’à ce que l’utilisateur tape ‘quit’ en entrée. Le script imprimera n’importe quel nombre de 1 à 20 qui prendra comme entrée sinon il imprimera « Le nombre est hors de portée »
# Déclarer une boucle infinie
pour (( ; ;))
do
# Prendre une entrée
echo « Entrer un nombre compris entre 1 et 20 »
read n
# Définir la condition de terminaison de la boucle
if
then
echo « Program terminated »
exit 0
fi
# Vérifier la plage de nombres
if(( $n <1 ||nn > 20))
puis
echo « Le nombre est hors de portée »
sinon
echo « Le nombre est $n »
fi
terminé
Sortie:
Exécutez le script.
Ici, 6 est pris comme première entrée qui est un nombre valide, 22 est pris comme deuxième entrée qui est un nombre invalide et quit est pris comme troisième entrée qui a terminé le script.
Aller en haut
Utilisation de la boucle for avec saut conditionnel et continuer
l’instruction ‘continue’ est utilisée pour omettre certaines parties de la boucle en fonction de n’importe quelle condition et l’instruction ‘break’ est utilisée pour terminer la boucle en fonction de n’importe quelle condition. L’exemple suivant montre les utilisations de ces instructions dans une boucle for. Ici, la boucle est utilisée pour lire une liste de données de chaîne et chaque valeur de la liste est stockée dans la variable,foodfood. Lorsque la valeur defoodfood est « Soupe », elle continuera la boucle sans imprimer la valeur. Lorsque la valeur defoodfood est « Pasta », elle termine la boucle. Lorsquefoodfood contient une valeur autre que ‘Soup’ et ‘Pasta’, il affichera la valeur. Ainsi, le script imprimera deux valeurs de la liste en sortie.
# Déclarer une boucle avec une liste
pour la nourriture dans les nouilles de pâtes de hamburger de soupe à pizza
do
# Définir la condition pour continuer
if
then
continue
# Définir la condition pour la pause
elif
then
break
else
echo « food la nourriture est mon préféré »
fi
terminé
Sortie:
Exécutez le script.
Ici, deux valeurs sont omises de la liste. « Soup » n’est pas imprimé pour la déclaration continue et « Pasta » n’est pas imprimé pour la déclaration de pause.
Aller en haut
Utilisation de la boucle for pour lire les noms de fichiers par globbing
Les noms de fichiers ou le contenu particulier d’un fichier peuvent être recherchés en utilisant globbing. Il utilise différents types de caractères génériques pour faire correspondre n’importe quel nom de fichier ou rechercher du contenu dans le fichier. Tous les fichiers avec l’extension txt de l’emplacement actuel sont recherchés imprimés par l’exemple suivant. Lorsque vous exécutez le script, tous les noms de fichiers correspondants seront imprimés sans saut de ligne en sortie.
# Loop recherchera tous les fichiers texte et stockera chaque nom de fichier dansfilefile
pour le fichier dans « *.txt »;
faire
# Imprimer le nom du fichier
echofilefile;
terminé
Sortie:
Exécutez le script.
Aller en haut
Utiliser la boucle for pour lire la sortie de la commande find
La commande ‘find’ est utilisée à différentes fins dans bash. Dans l’exemple suivant, la commande ‘find’ est utilisée pour lire tous les noms de fichiers texte à partir de l’emplacement actuel. Ici, l’option ‘-name’ à utiliser pour la recherche sensible à la casse. Ainsi, le script imprimera les noms de fichiers de l’emplacement actuel qui ont le ‘.extension txt’ avec n’importe quel nom. Ici, la variableFS est utilisée pour définir la nouvelle ligne comme séparateur de champ et imprimer la valeur defilefile dans chaque ligne.
# Définir le séparateur de champs
I=\’\n’;
# Lire les fichiers d’un répertoire
pour le fichier dans file(find-name »*.txt »); faire
echofilefichier
terminé
# Séparateur de champ Uunset
annuler I;
Sortie :
Exécutez le script.
La sortie suivante apparaîtra après l’exécution du script.
Aller en haut
Utilisation de la boucle for pour lire récursivement les noms de fichiers d’un répertoire
La commande ‘find’ peut être utilisée pour lire tous les fichiers et sous-dossiers d’un répertoire particulier. L’exemple suivant montre l’utilisation de la commande ‘find’ pour lire tous les noms de fichiers et répertoires sous le répertoire ‘mydir’. Ici, la variableFS est utilisée pour imprimer la valeur defilfilename avec ‘newline’ comme dans l’exemple précédent.
# Définir le séparateur de champ
FS=\’\n’;
# Lire les fichiers d’un répertoire
pour le nom de fichier dans fil(trouver « mydir »)
faire
echo « enamenom de fichier »
terminé
# Séparateur de champs non défini
non défini I;
Sortie :
Exécutez le script.
La sortie suivante apparaîtra après l’exécution du script.
Aller en haut
L’utilisation de la boucle for pour lire récursivement les noms de fichiers d’un répertoire avec la condition
‘for’ boucle avec la commande ‘find’ peut être utilisée pour imprimer som +
e noms de fichiers particuliers d’un répertoire en fonction de n’importe quelle condition. la commande ‘find’ est utilisée avec une condition dans l’exemple suivant. Il recherchera uniquement les noms de fichiers texte du répertoire mydir. Ici, l’option ‘-iname’ est utilisée avec la commande ‘find’ pour la recherche non sensible à la casse. Cela signifie que tous les fichiers avec l’extension ‘txt’ ou ‘TXT’ seront appariés et imprimés en sortie. Ici, la variableFS est utilisée pour imprimer la valeur defilfilename avec ‘newline’ comme dans l’exemple précédent.
# Définir le séparateur de champs
I=\’\n’;
# Lire tous les fichiers texte d’un répertoire
pour le nom de fichier dans fil (find mydir-iname’*.txt’); do
echo « filfilename »
terminé
# Séparateur de champ non défini
non défini I;
Sortie:
Exécutez la commande suivante pour afficher la liste des fichiers et dossiers du répertoire mydir.
Exécute le script.
Il y a trois fichiers texte dans le répertoire qui sont affichés dans la sortie.
Aller en haut
Exécuter la boucle jusqu’à ce que le fichier existe
Tout nom de fichier existe ou non est vérifié dans l’exemple suivant en utilisant une boucle for infinie. Dans ce script, un nom de fichier sera pris en entrée à chaque itération de la boucle et testera que le nom de fichier existe à l’emplacement actuel ou non. Si le nom de fichier existe, le script imprimera « Le fichier existe » et continuera la boucle sinon il terminera la boucle en imprimant le message « Le fichier n’existe pas ».
# Define infinite loop
for((;;))
do
# Input a filename
echo « Enter a file name »
read file
# Check the file exists or not
if
then
echo « Le nom du fichier n’existe pas »
exit 0
else
echo « Le fichier existe »
fi
terminé
Sortie:
Exécutez le script.
Un nom de fichier existant est donné en première entrée et un nom de fichier non existant est donné en deuxième sortie qui a terminé le script.
Aller en haut
Utilisation de la boucle for basée sur la sortie de la commande liste de paquets
Les informations sur les paquets installés dans le système peuvent être récupérées par la commande `apt list–-installed`. la boucle ‘for’ est utilisée dans l’exemple suivant pour lire les informations de package installées à partir de la commande liste de package et imprimer chaque information de package dans chaque ligne. La variableFS est utilisée ici pour imprimer la valeur delineline avec ‘newline’ comme dans l’exemple précédent.
FS=\’\n’;
# Lire le fichier ligne par ligne
pour la ligne dans line (liste aptinstalledinstallée)
do
echo « lineline »
terminé
# Séparateur de champ non défini
non défini I;
Sortie :
Exécutez le script.
La sortie affiche la liste des paquets installés.
Aller en haut
Utilisation de la boucle for pour lire les lignes d’un fichier
Il existe de nombreuses façons de lire un fichier dans bash. la commande ‘cat’ est utilisée dans l’exemple suivant pour lire le fichier, temp.txt. Chaque ligne du fichier stockera dans la variable,lineline et imprimera la ligne à chaque itération de la boucle for. La variableFS est utilisée ici pour imprimer la valeur delineline avec ‘newline’ comme dans l’exemple précédent.
# Définir le séparateur de champ
FS=\’\n’;
# Lire le fichier ligne par ligne
pour la ligne dans line(cat temp.txt)
do
echo « lineline »
terminé
# Séparateur de champ non défini
non définiFS;
Sortie :
Exécutez le script.
Aller en haut
Utilisation de la boucle for pour lire les lignes d’un fichier avec une correspondance conditionnelle
Si vous souhaitez imprimer des lignes particulières à partir d’un fichier uniquement, vous devez ajouter à l’intérieur de la boucle utilisée pour lire le fichier. L’exemple suivant imprime la sortie formatée de chaque ligne de ‘weekday.fichier txt ‘ basé sur une condition. Si une ligne du fichier contient la valeur « dimanche », elle imprimera le message « vacances » sinon elle imprimera le message « jour ouvrable ».
pour la ligne in (jour de la semaine cat.txt)
faire
# Comparer la valeur avec une chaîne data
if
then
echo « lineline est un jour férié »
else
echo « lineline est un jour ouvrable »
fi
terminé
Sortie:
Exécutez le script.
La sortie suivante apparaîtra après l’exécution du script.
Aller en haut
Utilisation de la boucle while avec un compteur
variablela variable de compteur est utilisée dans n’importe quelle boucle pour contrôler l’itération de la boucle. L’exemple suivant montre l’utilisation de la boucle while avec le compteur. Ici,countercounter est initialisé à 1 et while loop itérera 5 fois et imprimera la valeur decountercounter à chaque itération. countercounter est incrémenté de 1 à chaque étape pour atteindre la condition de terminaison de la boucle.
# Initialiser le compteur
counter = 1
# Itérer la boucle 5 fois
tandis que
faire
echo « Counter value =countercounter »
((counter++))
terminé
Sortie:
Exécutez le script.
Aller en haut
la boucle ‘while’ est utilisée dans l’exemple suivant pour afficher un menu de 5 options. Les quatre premières options sont utilisées pour effectuer quatre opérations arithmétiques basées sur l’entrée de l’utilisateur et la dernière option est utilisée pour quitter le script. Le menu apparaîtra après avoir fourni deux chiffres en entrée. Si l’utilisateur sélectionne ‘1’, les numéros d’entrée seront ajoutés. Si l’utilisateur sélectionne « 2 », le deuxième numéro d’entrée sera soustrait du premier numéro d’entrée. Si l’utilisateur sélectionne ‘3’, les numéros d’entrée seront multipliés et si l’utilisateur sélectionne ‘4’, le premier numéro d’entrée sera divisé par le deuxième numéro d’entrée.
# Prendre deux nombres
echo « Entrer un nombre »
lire n1
echo « Entrer un nombre »
lire n2
# Déclarer une boucle infinie
tandis que true
do
# Afficher le menu
echo « 1. Ajout «
echo » 2. Soustraction «
écho » 3. Multiplication «
écho » 4. Division «
écho » 5. Exit »
echo-n » Sélectionnez n’importe quel nombre de : »
entrée de lecture
# Effectuez l’opération en fonction de la valeur sélectionnée
if]
then
((result=n1 + n2))
elif]
then
((result=n1-n2))
elif]
then
((result=resultn1*$n2))
elif]
puis
((result=resultn1/$n2))
elif]
puis
exit 0
else
echo « Entrée invalide »
fi
echo « Le résultat estresultresult »
terminé
Sortie:
Exécutez le script.
La sortie suivante apparaîtra après avoir sélectionné les options 2 et 5.
Aller en haut
Combinaison de boucles while avec getopts
‘getopts’ est une fonction intégrée de bash qui est utilisée pour lire les arguments et les options dans le script bash. L’exemple suivant montre l’utilisation de la fonction getopts utilisée dans une boucle while. Ici, trois valeurs d’option sont utilisées avec getopts. Ce sont « a », « r » et « c ». Trois messages différents seront imprimés pour ces options.
# Lisez l’option et stockez-la dans une variable
tout en optant pour l’option « arc »; do
# Cochez la valeur de l’option
casecase{option} dans
a) # option a
echo « Le processus est interrompu »
;;
r) # option r
echo « Le processus est redémarré »
;;
c) # option c
echo » Le processus se poursuit »
;;
\? ) # option non valide
echo « Utiliser: ou ou »
;;
esac
terminé
Sortie:
Exécutez le script avec des options valides.
Exécute le script avec une option non valide.
Aller en haut
Utilisation de la boucle until avec un compteur
La boucle Until peut être utilisée avec un compteur comme la boucle while qui est affichée précédemment. L’exemple suivant montre l’utilisation de la boucle until avec un compteur. Ici, la variablecountercounter est utilisée pour contrôler l’itération de la boucle initialisée à 1. La boucle until continuera jusqu’à la valeur decountercounter à 5. Ainsi, la boucle itérera 6 fois et imprimera la valeurcountercounter à chaque étape. countercounter sera décrémenté de 1 à chaque étape pour atteindre la condition de terminaison de la boucle.
# Initialise le compteur
counter =10
# Itère la boucle 6 fois
jusqu’à ce que
fasse
écho « La valeur actuelle de counter =countercounter »
((counter–))
terminé
Sortie:
Exécutez le script .
Aller en haut
Terminer jusqu’à la boucle en fonction de l’entrée utilisateur
Toute boucle se termine en fonction d’une condition particulière. Comment la boucle until peut être terminée en fonction de l’entrée de l’utilisateur, est montrée dans l’exemple suivant. Selon la condition de terminaison, la boucle se terminera lorsque la valeur denumbernumber est supérieure à 50. La valeur denumbernumber n’est pas incrémentée à l’intérieur de la boucle. Si., la boucle continuera à prendre l’entrée de l’utilisateur jusqu’à ce qu’un nombre supérieur à 50 soit pris en entrée.
# Initialiser le nombre
number= 0
# Définir le motif pour les données numériques
motif=’^+$’
# Définissez la condition de terminaison
jusqu’à ce que
do
echo-n » Entrez un nombre: »
read number
# Vérifiez que la valeur d’entrée est number ou non
if! ]
puis
erreur « echo »: Pas un nombre «
number = 0
else
echo « Vous avez entrénumbernumber »
fi
terminé
Sortie:
Exécutez le script.
Le script réitère la boucle pour la valeur d’entrée 4, affiche le message d’erreur pour la valeur d’entrée, gg et termine la boucle pour la valeur d’entrée 54.
Aller en haut
En utilisant des boucles while imbriquées
Lorsqu’une boucle est déclarée dans une autre boucle, elle est appelée boucle infinie. L’exemple suivant montre l’utilisation de la boucle while imbriquée. Ici, la première boucle while itérera 2 fois et la seconde boucle while à l’intérieur de la première boucle itérera trois fois. L’itération totale des boucles est de 2×3 = 6 fois. les variablesii etjj sont utilisées pour contrôler l’itération de ces boucles et les valeurs de ces variables à chaque étape sont imprimées en sortie.
# Initialiser i et j
i = 1
j = 1
# Définir la condition de terminaison pour i
while
do
# Définir la condition de terminaison pour j
while
do
# Imprimer la valeur actuelle de i et j
printf « i =%d, j =%d\n »i i $ j
((j++))
terminé
j = 1
((i++))
terminé
Sortie:
Exécutez le script.
Aller en haut
Utilisation de la boucle until pour dormir / attendre la tâche d’arrière-plan démarrée dans le script
Tout processus peut être exécuté en arrière-plan en utilisant le symbole ‘&’. Cet exemple montre comment un processus peut être exécuté en arrière-plan en utilisant la boucle until et terminer la boucle en fonction du temps spécifié dans la commande sleep. Ici, la variablecncnt est utilisée pour terminer la boucle. La boucle lancera le processus d’arrière-plan et écrira la sortie dans un fichier texte nommé « sortie.txt » pendant 1 seconde. Après cela, la condition de terminaison de la boucle sera vérifiée et elle retournera false. Ensuite, le script affichera un message, « Sleeping… » et quittera le script après 3 secondes.
# Initialiser le compteur
cnt = 1
# Définir la condition de terminaison
jusqu’à ce que
do
echo « Le processus d’arrière-plan est en cours d’exécution »;
# Attendre 1 seconde
sommeil 1;
((cnt++))
terminé > sortie.txt &
# Attendez 3 secondes
echo » Dormir… »
sommeil 3
Sortie :
Exécutez le script.
Vérifiez la sortie du script.
Aller en haut
Utilisation de la boucle while pour lire le pid à partir de la sortie ps qui n’est pas terminée
la commande ‘ps’ est utilisée pour obtenir des informations sur tous les processus en cours d’exécution du système. Il fournit des informations détaillées sur tout processus en cours d’exécution, telles que l’ID utilisateur, le PID, l’utilisation du processeur, l’utilisation de la mémoire, etc. L’exemple suivant montre comment une boucle while peut être utilisée pour lire les informations de processus en cours d’exécution liées à ‘apache’. Ici, la variableFS est utilisée pour imprimer le PID de chaque processus avec une nouvelle ligne. Ensuite, il attendra que l’utilisateur appuie sur n’importe quelle touche pour quitter le script.
# Définir le séparateur de champs
FS= »
while
do
# Récupère tout l’id de processus en cours d’exécution d’apache
pid = ‘ps-ef/grep « apache|/awk’ { print22″ le processus est en cours d’exécution… »} »
echoppid
# Attendez 1 seconde
sleep 1
# Appuyez sur n’importe quelle touche pour terminer la boucle
echo « Appuyez sur n’importe quelle touche pour terminer »
if read-r-N 1; puis
pause
fi
terminé
# Désélectionner le séparateur de champs
désélectionnerFS
Sortie:
Exécutez le script.
Le PID de tous les processus en cours d’exécution basés sur ‘apache’ est affiché dans la sortie.
Aller en haut
Rechercher une chaîne dans un fichier à l’aide de loop et quitter
Créer un fichier nommé month.txt avec le contenu suivant pour tester le script bash donné ci-dessous.
mois.txt
February
March
April
May
June
July
August
September
October
November
December
‘ la boucle while ‘ est utilisée dans l’exemple suivant pour lire le mois.fichier txt ligne par ligne. Si une ligne contient la valeur, ‘June’, elle imprimera « Enjoy summer vacation » et se terminera à partir du script, sinon elle imprimera la valeur delineline.
# Définissez le nom de fichier sur lire
filename= »month.txt »
# Lire le fichier ligne par ligne
whilewhile = read-r line
do
# Vérifier que la valeur de la ligne est égale à June
# Terminer le programme si la condition est vraie
if];
then
echo « Profitez des vacances d’été »
exit 0
else
echolineline
fi
terminé <enamenom du fichier
Sortie:
Exécutez le script.
Ici, ‘June’ existe dans le mois du fichier.txt qui termine la boucle. Ainsi, les autres noms de mois après « juin » ne seront pas lus par la boucle.
Haut de page
Combinez bash avec curl pour évaluer les données de l’URL
Les données peuvent être transférées vers ou depuis n’importe quel serveur réseau dans bash en utilisant la commande ‘curl’ avec n’importe quel protocole pris en charge comme HTTP, FTP, TELNET, etc. C’est un outil en ligne de commande. Comment la commande ‘curl’ peut être utilisée pour évaluer les données de l’URL à l’aide de la boucle for est illustrée dans l’exemple suivant. Ici, for loop lira une liste d’URL et transmettra chaque valeur d’URL dans le curl et imprimera les données reçues de l’URL.
# Lisez chaque URL de la liste
pour l’URL dans « yahoo.com « »youtube.com »
faire
# Imprimer le code de réponse HTTP pour chaque URL
echourlurl; curl-v-m 5-s $1″urlurl|/grep HTTP/1.1;
terminé
Sortie:
Exécutez le script.
Haut de page
Lecture des données d’un port envoyé par netcat à l’aide de la boucle while
la commande ‘netcat’ est utilisée pour lire et écrire des données sur le réseau à l’aide du protocole tcp ou udp. la commande ‘nc’ est utilisée dans bash pour exécuter la commande ‘netcat’. L’exemple suivant montre l’utilisation de la commande ‘nc’ dans la boucle while. Ici, le script essaiera de se connecter avec le port 1234 à l’aide de la commande nc et il imprimera un message dans l’autre terminal s’il peut se connecter. Vous devez ouvrir une autre fenêtre ou un autre onglet de terminal pour exécuter la commande ‘nc localhost 1234’ pour établir une connexion. Après l’établissement de la connexion, tout message peut être transféré d’un terminal à un autre terminal.
echo » Écoute sur le port 1234… »
# Lire le message transmis par netcat sur le port 1234
pendant la lecture du texte
do
# Terminer la boucle si le message reçu est « quit »
if; alors
echo « Bye »
break
else
echo « texttext »
fi
# Imprimer le message lorsque le port est connecté
fait < < ((printf » Bienvenue.\r\nType un message: »)/nc-l 1234)
Sortie:
Exécutez le script dans un terminal pour démarrer l’écoute sur le port 1234.
Ensuite, ouvrez un autre terminal et exécutez la commande suivante pour communiquer avec
le premier terminal.
Il affichera un message de bienvenue dans le deuxième terminal. Si l’utilisateur tape quelque chose dans le deuxième terminal, il sera affiché dans le premier terminal. Lorsque l’utilisateur tapera « quitter » dans le deuxième terminal, le script se terminera par l’affichage d’un message « Bye » dans le premier terminal.
Aller en haut
URL ping en utilisant une boucle
Vous pouvez découvrir qu’un site Web est en direct ou non en exécutant la commande « ping » avec l’URL du site. la commande ‘ping’ est utilisée avec ‘google.com « dans l’exemple suivant pour vérifier que la connexion Internet fonctionne ou non. La boucle While itérera 5 fois dans le script et essaiera de ping google.com . Si le serveur répond, il affichera « Internet fonctionne » et mettra fin à la boucle. Si la boucle itère 5 fois et n’obtient aucune réponse du serveur, elle affichera « Pas de connexion Internet ».
# Réglez le compteur
count = 5
while]
do
# Essayez de ping google.com
ping-c 1 google.com
c=??
# Vérifiez le code d’état
if]
then
echo « Internet fonctionne »
exit 0
fi
# Décrémentez le compteur
((count–))
terminé
echo « Pas de connexion Internet »
Sortie:
Exécutez le script.
Vous obtiendrez une sortie similaire si votre connexion Internet fonctionne correctement.
Go to Top
Exécution de top en mode batch à l’aide d’une sortie de boucle et d’enregistrement
la commande ‘top’ est un outil d’administration Linux utilisé pour examiner l’utilisation des ressources système, gérer différentes tâches et surveiller les processus en cours d’exécution. L’exemple suivant montre comment exécuter la commande « top » en mode batch à l’aide de la boucle for et stocker les enregistrements dans un fichier texte. Ici, l’option -b est utilisée pour démarrer la commande ‘top’ en mode batch et l’option -p est utilisée pour définir l’id de processus que vous souhaitez surveiller. La sortie de la commande ‘top’ sera stockée dans output.fichier txt.
# Boucle itérera 5 fois et exécutera la commande top
pour ((i = 0; i < 5; i++))
do
top-b-p 2875-n1|tail-1 > > sortie.txt
terminé
Sortie:
Tout d’abord, exécutez la commande suivante pour trouver la liste des processus en cours d’exécution.
Maintenant, exécutez le script.
Exécutez la commande suivante pour afficher la sortie du script.
Haut de la page
Conclusion
Les boucles peuvent être utilisées dans bash de différentes manières pour effectuer différents types de tâches simples ou complexes. Comment trois types de boucles peuvent être utilisés dans bash pour différentes tâches telles que la récupération de listes ou de tableaux, la lecture de fichiers ou toute sortie de commande, etc. sont présentés dans cet article en utilisant des exemples très simples. J’espère que ces exemples aideront le lecteur à comprendre plus clairement les utilisations de la boucle bash.