Skip to main content

Exemples de scripts de shell Linux de BASH 'for' Loop

Comment obtenir rapidement l'équivalence de votre diplôme ? Programme. (Avril 2025)

Comment obtenir rapidement l'équivalence de votre diplôme ? Programme. (Avril 2025)
Anonim

BASH (qui signifie Bourne Again Shell) est un langage de script utilisé par la plupart des systèmes d'exploitation Linux et UNIX.

Vous pouvez exécuter les commandes BASH dans une fenêtre de terminal les unes après les autres ou vous pouvez ajouter les commandes à un fichier texte pour générer un script shell.

L’avantage de l’écriture de scripts shell est que vous pouvez les exécuter encore et encore. Par exemple, imaginez que vous deviez ajouter un utilisateur à un système, définir leurs autorisations et gérer leur environnement de démarrage. Vous pouvez écrire les commandes sur un morceau de papier et les exécuter au fur et à mesure que vous ajoutez de nouveaux utilisateurs ou écrire un seul script et simplement passer des paramètres à ce script.

Les langages de script tels que BASH ont des constructions de programmation similaires à celles des autres langages. Par exemple, vous pouvez utiliser les paramètres d'importation pour obtenir des entrées du clavier et les stocker en tant que variables. Vous pouvez ensuite demander au script d'effectuer une action donnée en fonction de la valeur des paramètres d'entrée.

Un élément clé de tout langage de programmation et de script est la possibilité d'exécuter le même morceau de code encore et encore.

Il existe un certain nombre de façons de répéter le code (également connu sous le nom de boucles). Dans ce guide, vous apprendrez à écrire une boucle "pour".

UNE pour boucle répète une certaine section du code à plusieurs reprises. Ils sont utiles pour qu'une série de commandes puissent continuer à s'exécuter jusqu'à ce qu'une condition particulière soit remplie, après quoi elles s'arrêteront.

Dans ce guide, cinq méthodes d'utilisation de la boucle for dans un script BASH vous seront présentées.

Avant de commencer

Avant de commencer à utiliser les exemples de boucles for, vous devez ouvrir une fenêtre de terminal et suivre les étapes suivantes:

  1. Entrer scripts mkdir (en savoir plus sur mkdir ici).

  2. Entrer scripts cd (cela change le répertoire en des scripts ).

  3. Entrer nano examplen.sh (où n est l'exemple sur lequel vous travaillez).

  4. Entrez le script.

  5. presse CTRL + O pour sauver et CTRL + X pour quitter.

  6. Courir bash examplen.sh (encore, avec n étant l'exemple avec lequel vous travaillez).

Comment parcourir une liste

#! / bin / bashpour nombre dans 1 2 3 4 5doecho $ numberdoneexit 0

La méthode BASH consistant à utiliser des boucles "pour" diffère quelque peu de la manière dont la plupart des langages de programmation et de script traitent les boucles "pour". Décomposons le script.

Dans un BASH "for" loop all, les instructions entre faire et terminé sont effectuées une fois pour chaque élément de la liste.

Dans l'exemple ci-dessus, la liste est tout ce qui vient après le mot dans (c'est-à-dire 1 2 3 4 5).

A chaque itération de la boucle, la valeur suivante de la liste est insérée dans la variable spécifiée après le mot "pour" . Dans la boucle ci-dessus, la variable s'appelle nombre .

L'instruction echo est utilisée pour afficher des informations à l'écran.

Par conséquent, cet exemple prend les nombres 1 à 5 et les affiche un par un à l'écran:

  • 1
  • 2
  • 3
  • 4
  • 5

Comment boucler entre un début et une fin

Le problème avec l'exemple ci-dessus est que si vous voulez traiter une liste plus longue (par exemple de 1 à 500), il vous faudrait beaucoup de temps pour taper tous les nombres.

Ceci nous amène au deuxième exemple qui montre comment spécifier un point de départ et un point de fin:

#! / bin / bashfor nombre dans {1..10} doecho "$ number" doneexit 0

Les règles sont fondamentalement les mêmes. Les valeurs après le mot " dans" composent la liste à parcourir et chaque valeur de la liste est placée dans la variable (c'est-à-dire nombre), et chaque fois que la boucle itère, les instructions entre faire et terminé sont effectuées.

La principale différence est la façon dont la liste est formée. Les accolades {} désignent essentiellement une plage et la plage, dans ce cas, est comprise entre 1 et 10 (les deux points séparent le début et la fin d'une plage).

Cet exemple, par conséquent, parcourt chaque nombre entre 1 et 10 et le affiche à l'écran comme suit:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

La même boucle aurait pu être écrite ainsi, avec une syntaxe identique à celle du premier exemple:

pour le nombre dans 1 2 3 4 5 6 7 8 9 10

Comment sauter des nombres dans une plage

L'exemple précédent montrait comment faire une boucle entre un point de départ et un point de fin. Nous allons maintenant regarder comment sauter des nombres dans la plage.

Imaginez que vous souhaitiez effectuer une boucle entre 0 et 100 mais ne montrer que tous les dixièmes. Le script suivant montre comment faire cela:

#! / bin / bashfor nombre dans {0..100..10} doecho "$ number" doneexit 0

Les règles sont fondamentalement les mêmes. Il existe une liste, une variable et un ensemble d'instructions à exécuter entre faire et terminé . La liste cette fois-ci ressemble à ceci: {0..100..10}.

Le premier nombre est 0 et le numéro final est 100. Le troisième nombre (10) est le nombre d'éléments de la liste à ignorer.

L'exemple ci-dessus affiche donc le résultat suivant:

  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100

Une boucle de recherche plus traditionnelle

La méthode d'écriture BASH pour les boucles est un peu étrange comparée à d'autres langages de programmation.

Cependant, vous pouvez écrire une boucle for dans un style similaire au langage de programmation C, comme ceci:

#! / bin / bashfor ((number = 1; number <100; number ++)) {if (($ number% 5 == 0)) thenecho "$ number est divisible par 5" fi} exit 0

La boucle commence par définir le numéro de la variable à 1 (nombre = 1 ). La boucle continuera à itérer tant que la valeur d’un nombre est inférieure à 100 ( nombre <100 ). La valeur de nombre change en ajoutant 1 après chaque itération ( nombre ++ ).

Tout ce qui se trouve entre les accolades est exécuté à chaque itération de la boucle.

Le bit entre les accolades vérifie la valeur d'un nombre , le divise par 5 et compare le reste à 0. Si le reste est 0, le nombre est divisible par 5 et s'affiche ensuite à l'écran.

Par exemple:

  • 5 est divisible par 5
  • 10 est divisible par 5
  • 15 est divisible par 5

Si vous souhaitez modifier la taille de l'étape de l'itération, vous pouvez modifier la section number ++ afin qu'elle soit nombre = nombre + 2 , nombre = nombre + 5 , ou nombre = nombre + 10 etc.

Cela peut encore être réduit à nombre + = 2 ou nombre + = 5 .

Un exemple pratique

Les boucles for peuvent faire plus que parcourir des listes de nombres. Vous pouvez réellement utiliser la sortie d'autres commandes en tant que liste.

L'exemple suivant montre comment convertir des fichiers audio de MP3 en WAV:

#! / bin / bashpour le fichier dans ./*.mp3dompg -w ./wavs/"${fileBuch".wav "$ file" done

La liste dans cet exemple est chaque fichier avec l’extension .MP3 dans le dossier actuel et la variable est un fichier .

le mpg La commande convertit le fichier MP3 en WAV. Cependant, vous devrez probablement l'installer d'abord avec votre gestionnaire de paquets.