Introduction
Dans cet atelier, vous allez apprendre à comparer des tableaux à l'aide de scripts Shell. Les tableaux sont des structures de données très utiles pour stocker plusieurs valeurs, et leur comparaison est une tâche courante en programmation. Vous travaillerez avec trois tableaux distincts et développerez un script capable d'extraire les éléments communs à l'ensemble de ces listes. Ce processus vous permettra de maîtriser la manipulation des tableaux, l'usage des boucles et les instructions conditionnelles en Shell.
Créer le fichier de script
Pour commencer, créons un nouveau fichier pour héberger notre script.
Ouvrez un terminal dans l'interface WebIDE. Vous devriez voir une invite de commande se terminant par le symbole
$.Naviguez vers le 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), et /project est un sous-dossier situé à l'intérieur.
- 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 simplement à jour sa date de modification sans altérer son contenu.
- Ouvrez le fichier dans l'éditeur de la WebIDE. Vous pouvez le faire en cliquant sur le nom du fichier dans l'explorateur de fichiers situé sur le côté gauche de l'interface.
Ajouter le shebang et initialiser les tableaux
Commençons maintenant la rédaction de notre script en ajoutant la ligne shebang et en initialisant nos tableaux de données.
- Ajoutez le contenu suivant dans le fichier
array-comparison.sh:
#!/bin/bash
## Initialize the arrays
a=(3 5 8 10 6)
b=(6 5 4 12)
c=(14 7 5 7)
Analysons ces lignes :
- La première ligne
#!/bin/bashest appelée "shebang". Elle indique au système d'utiliser l'interpréteur Bash pour exécuter ce script. Cette ligne est indispensable pour tout script Shell. - Nous initialisons ensuite trois tableaux :
a,betc. 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 données pour identifier les éléments communs.
Implémenter la première boucle de comparaison
Mettons en place la première boucle de comparaison pour trouver les éléments communs entre les tableaux 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[@]}"
Explications détaillées du code :
z=()initialise un tableau vide nommézdestiné à stocker les éléments communs trouvés.for x in "${a[@]}"est une boucle qui parcourt chaque élément du tableaua. La syntaxe"${a[@]}"permet de déployer tous les éléments du tableau.- Nous utilisons ensuite une boucle imbriquée
for y in "${b[@]}"qui parcourt chaque élément du tableaub. if [ $x = $y ]vérifie si l'élément actuel deaest identique à l'élément actuel deb.- S'ils sont égaux, nous ajoutons cet élément au tableau
zvia la commandez+=($x). - Enfin, nous affichons les éléments communs avec
echo "Common elements between a and b: ${z[@]}". La syntaxe${z[@]}affiche l'intégralité du contenu du tableauz.
Implémenter la seconde boucle de comparaison
À présent, implémentons la seconde boucle pour comparer le tableau c avec les éléments communs précédemment identifiés et stockés dans le tableau z.
Ajoutez le code suivant à la suite de 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 bloc de code est similaire au précédent, avec quelques ajustements clés :
- Nous initialisons un nouveau tableau vide
jpour stocker les éléments communs finaux. - La boucle externe
for i in "${c[@]}"parcourt les éléments du tableauc. - La boucle interne
for k in "${z[@]}"parcourt les éléments communs que nous avons trouvés entreaetb(stockés dansz). - Nous comparons les éléments de
cavec ceux dez. En cas de correspondance, l'élément est ajouté au tableauj. - Enfin, nous affichons les éléments communs aux trois tableaux.
Rendre le script exécutable et le lancer
Maintenant que notre script est terminé, nous devons lui donner les droits d'exécution et le tester.
- 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 le droit d'exécution, vous permettant ainsi de lancer le script comme un programme.
- Exécutez le script :
~/project/array-comparison.sh
Cette commande lance l'exécution de votre script. La partie ~/project/ précise le chemin d'accès au fichier.
Vous devriez obtenir un résultat semblable à celui-ci :
Common elements between a and b: 5 6
Common elements among a, b, and c: 5
Ce résultat confirme que :
- Les éléments communs aux tableaux
aetbsont 5 et 6. - L'unique élément commun aux trois tableaux (
a,betc) est 5.
Si vous n'obtenez pas ce résultat ou si une erreur survient, vérifiez attentivement votre code pour corriger d'éventuelles fautes de frappe ou des segments manquants.
Résumé
Dans cet atelier, vous avez appris à comparer des tableaux en script Shell. Vous avez conçu un script capable d'identifier les éléments communs entre trois tableaux en utilisant des boucles imbriquées et des structures conditionnelles. Cet exercice a mis en lumière des concepts fondamentaux du Shell, notamment :
- La création et l'initialisation de tableaux.
- L'utilisation de boucles imbriquées pour comparer des données.
- L'usage de conditions pour vérifier l'égalité.
- L'ajout dynamique d'éléments dans un tableau.
- La gestion des permissions et l'exécution d'un script.
Ces compétences sont essentielles en programmation Shell et pourront être appliquées à des tâches de traitement de données plus complexes à l'avenir. En continuant à pratiquer, vous découvrirez 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é de la maîtrise. Essayez de modifier le script pour tester d'autres tableaux ou pour chercher les éléments uniques plutôt que les éléments communs. Bon scriptage !



