Comparaison de tableaux en Shell

ShellShellBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à comparer des tableaux (arrays) en script Shell. Les tableaux sont des structures de données utiles pour stocker plusieurs valeurs, et les comparer est une tâche courante en programmation. Vous travaillerez avec trois tableaux et développerez un script pour trouver les éléments communs entre eux. Ce processus vous aidera à comprendre la manipulation des tableaux, les boucles et les instructions conditionnelles en script Shell.

Créer le fichier de script

Tout d'abord, créons un nouveau fichier pour notre script.

  1. Ouvrez un terminal dans le WebIDE. Vous devriez voir une invite de commande se terminant par un signe $.

  2. Accédez au répertoire du projet :

cd ~/project

Cette commande change votre répertoire actuel pour le dossier du projet. Le symbole ~ représente votre répertoire personnel (home directory), et /project est un sous-dossier à l'intérieur.

  1. Créez un nouveau fichier nommé array-comparison.sh :
touch array-comparison.sh

La commande touch crée un fichier vide. Si le fichier existe déjà, elle met à jour l'horodatage du fichier sans modifier son contenu.

  1. Ouvrez le fichier dans l'éditeur du WebIDE. Vous pouvez le faire en cliquant sur le nom du fichier dans l'explorateur de fichiers à gauche de l'interface du WebIDE.

Ajouter le shebang et initialiser les tableaux (arrays)

Maintenant, commençons à écrire notre script en ajoutant le shebang et en initialisant nos tableaux.

  1. Ajoutez le contenu suivant à array-comparison.sh :
#!/bin/bash

## Initialize the arrays
a=(3 5 8 10 6)
b=(6 5 4 12)
c=(14 7 5 7)

Décortiquons cela :

  • La première ligne #!/bin/bash est appelée un shebang. Elle indique au système d'utiliser l'interpréteur Bash pour exécuter ce script. Cette ligne est cruciale pour tout script Shell.
  • Nous initialisons ensuite trois tableaux : a, b et c. En Bash, les tableaux sont définis en entourant les éléments de parenthèses () et en les séparant par des espaces.
  • Chaque tableau contient différentes valeurs entières. Nous utiliserons ces tableaux pour trouver les éléments communs.

Implémenter la première boucle de comparaison

Implémentons la première boucle de comparaison pour trouver les éléments communs entre les tableaux (arrays) a et b.

Ajoutez le code suivant à votre script :

## Initialize an array to store common elements between a and b
z=()

## Compare arrays a and b
for x in "${a[@]}"; do
  for y in "${b[@]}"; do
    if [ $x = $y ]; then
      z+=($x)
    fi
  done
done

echo "Common elements between a and b: ${z[@]}"

Expliquons ce code en détail :

  • z=() initialise un tableau vide z pour stocker les éléments communs.
  • for x in "${a[@]}" est une boucle qui itère sur chaque élément du tableau a. La syntaxe "${a[@]}" s'étend à tous les éléments du tableau.
  • Nous avons ensuite une boucle imbriquée for y in "${b[@]}" qui itère sur chaque élément du tableau b.
  • if [ $x = $y ] vérifie si l'élément actuel de a est égal à l'élément actuel de b.
  • Si ils sont égaux, nous ajoutons cet élément au tableau z en utilisant z+=($x).
  • Enfin, nous affichons les éléments communs en utilisant echo "Common elements between a and b: ${z[@]}". La syntaxe ${z[@]} s'étend à tous les éléments du tableau z.

Implémenter la deuxième boucle de comparaison

Maintenant, implémentons la deuxième boucle de comparaison pour trouver les éléments communs entre le tableau (array) c et les éléments communs précédemment trouvés dans le tableau z.

Ajoutez le code suivant à votre script :

## Initialize an array to store common elements among a, b, and c
j=()

## Compare array c with the common elements found in z
for i in "${c[@]}"; do
  for k in "${z[@]}"; do
    if [ $i = $k ]; then
      j+=($i)
    fi
  done
done

echo "Common elements among a, b, and c: ${j[@]}"

Ce code est similaire à la boucle précédente, mais présente quelques différences clés :

  • Nous initialisons un nouveau tableau vide j pour stocker les éléments communs finaux.
  • La boucle externe for i in "${c[@]}" itère sur les éléments du tableau c.
  • La boucle interne for k in "${z[@]}" itère sur les éléments communs que nous avons trouvés entre a et b, qui sont stockés dans le tableau z.
  • Nous comparons les éléments de c avec les éléments de z, et s'il y a une correspondance, nous l'ajoutons au tableau j.
  • Enfin, nous affichons les éléments communs entre les trois tableaux.

Rendre le script exécutable et l'exécuter

Maintenant que nous avons terminé notre script, rendons-le exécutable et exécutons-le.

  1. Dans le terminal, rendez le script exécutable :
chmod +x ~/project/array-comparison.sh

La commande chmod modifie les permissions d'un fichier. L'option +x ajoute les permissions d'exécution, vous permettant d'exécuter le script.

  1. Exécutez le script :
~/project/array-comparison.sh

Cette commande exécute votre script. La partie ~/project/ spécifie le chemin vers le script.

Vous devriez voir une sortie similaire à ceci :

Common elements between a and b: 5 6
Common elements among a, b, and c: 5

Cette sortie montre que :

  • Les éléments communs entre les tableaux (arrays) a et b sont 5 et 6.
  • L'élément commun entre les trois tableaux (a, b et c) est 5.

Si vous ne voyez pas cette sortie ou rencontrez une erreur, vérifiez votre script pour tout éventuel fautes de frappe ou parties manquantes.

Résumé

Dans ce laboratoire (lab), vous avez appris à comparer des tableaux (arrays) en script Shell. Vous avez créé un script qui trouve les éléments communs entre trois tableaux en utilisant des boucles imbriquées et des instructions conditionnelles. Cet exercice a démontré des concepts clés en script Shell, notamment :

  1. La création et l'initialisation de tableaux
  2. L'utilisation de boucles imbriquées pour comparer les éléments des tableaux
  3. Les instructions conditionnelles pour vérifier l'égalité
  4. L'ajout dynamique d'éléments aux tableaux
  5. La mise en exécution d'un script et son exécution

Ces compétences sont fondamentales en script Shell et peuvent être appliquées à des tâches de traitement de données plus complexes à l'avenir. Au fur et à mesure que vous continuerez à travailler avec des scripts Shell, vous constaterez que la manipulation de tableaux est un outil puissant pour gérer efficacement des ensembles de données.

N'oubliez pas que la pratique est la clé pour maîtriser ces concepts. Essayez de modifier le script pour qu'il fonctionne avec différents tableaux ou pour trouver des éléments uniques au lieu d'éléments communs. Bonne programmation!