Créer un script Shell avec une boucle for
Au cours de cette étape, vous allez élaborer un script shell utilisant une boucle for pour parcourir la liste des fichiers d'un répertoire et effectuer une opération sur chacun d'eux. Ce script illustrera comment traiter plusieurs fichiers de manière dynamique, une compétence fondamentale en administration système.
Tâches
- Créer un script shell qui utilise une boucle
for pour itérer à travers les fichiers d'un répertoire spécifié.
- Pour chaque fichier identifié, le script doit afficher le nom du fichier ainsi que son contenu.
Exigences
- Le script doit être nommé
list_files.sh.
- Le script doit être situé dans le répertoire
~/project.
- Le script doit impérativement commencer par le shebang
#!/bin/bash.
- Le script doit accepter un chemin de répertoire comme premier argument de ligne de commande.
- Le script doit utiliser une boucle
for pour parcourir les éléments à l'intérieur du répertoire fourni.
- Pour chaque fichier régulier rencontré, le script doit afficher "File: " suivi du nom de base du fichier, puis afficher l'intégralité du contenu du fichier.
- Si aucun argument de répertoire n'est fourni, le script doit afficher un message d'utilisation et s'arrêter avec un code d'état d'erreur (non nul).
Exemple
Supposons que vous ayez créé le script list_files.sh dans ~/project et que vous l'ayez rendu exécutable. Lorsque vous l'exécutez avec ~/project comme argument, le résultat devrait ressembler à ceci :
[labex@host ~]$ cd ~/project
[labex@host project]$ chmod +x list_files.sh
[labex@host project]$ ./list_files.sh ~/project
File: file1.txt
Content of file1.txt
File: file2.txt
Content of file2.txt
File: file3.txt
Content of file3.txt
[labex@host project]$
Si vous lancez le script sans argument, il doit afficher les instructions d'utilisation :
[labex@host project]$ ./list_files.sh
Usage: ./list_files.sh <directory_path>
[labex@host project]$ echo $?
1
[labex@host project]$
Le contenu exact affiché dépendra bien entendu des fichiers présents dans votre répertoire.
Astuces
- Utilisez la variable spéciale
$1 pour accéder au premier argument passé à votre script.
- Pour parcourir les fichiers d'un répertoire, vous pouvez utiliser un motif de substitution (wildcard) tel que
"$1"/*.
- Utilisez une structure
if avec l'opérateur de test -f (par exemple, if [ -f "$file" ]) pour vérifier qu'un élément est bien un fichier régulier et non un dossier.
- La commande
basename est très utile pour extraire uniquement le nom du fichier à partir d'un chemin complet. Par exemple, basename /home/labex/project/file1.txt renverra file1.txt.
- La commande
cat permet d'afficher le contenu d'un fichier.
- N'oubliez pas de rendre votre script exécutable avec
chmod +x.
- Pour vérifier si une variable est vide, vous pouvez utiliser
if [ -z "$variable" ].
- Pour quitter un script avec un code d'état spécifique, utilisez
exit <status_code>.