Introduction
Lorsque vous écrivez des scripts, vous devez souvent répéter plusieurs fois le même bloc de code. Plutôt que de réécrire ou de copier-coller ce code, vous pouvez utiliser des fonctions.
Une fonction est un bloc de code nommé qui exécute une tâche précise. Vous la définissez une seule fois, puis vous pouvez l’appeler chaque fois que nécessaire. Vos scripts deviennent ainsi :
- Modulaires : plus faciles à lire et à gérer.
- Réutilisables : vous écrivez le code une fois et vous l’utilisez plusieurs fois.
- Faciles à maintenir : si vous devez modifier la logique, vous ne la mettez à jour qu’à un seul endroit.
Les fonctions sont importantes, car les scripts volumineux deviennent difficiles à comprendre lorsque toute la logique se trouve dans un seul long bloc exécuté de haut en bas. Découper un script en fonctions constitue l’une des premières étapes pour passer d’un « bricolage rapide en shell » à une « automatisation facile à maintenir ».
Dans ce lab, vous apprendrez les principes fondamentaux de la réécriture d’un script à l’aide de fonctions. Vous allez :
- Créer un script simple.
- Définir une fonction nommée
greet_user. - Appeler la fonction pour l’exécuter.
- Améliorer la fonction afin qu’elle accepte des paramètres (arguments).
Créer le fichier de script
Commencez par préparer votre espace de travail. Vous allez créer un fichier nommé functions.sh pour y placer votre code.
À ce stade, le fichier de script est encore un simple conteneur. Dans ce lab, l’idée importante n’est pas le fichier lui-même, mais le fait qu’un script peut être organisé en éléments nommés plutôt qu’en une seule longue séquence exécutée de haut en bas.
Commencez par accéder au répertoire du projet et créer le fichier :
cd ~/project
touch functions.sh
Ouvrez ensuite le fichier dans l’éditeur de texte pour ajouter l’en-tête Shebang standard :
nano functions.sh
Ajoutez la ligne suivante au début du fichier :
#!/bin/bash
Enregistrez le fichier (Ctrl+O, Enter), puis quittez (Ctrl+X).
Enfin, rendez le script exécutable afin de pouvoir l’exécuter plus tard :
chmod +x functions.sh
Vous pouvez maintenant commencer à écrire du code.
Définir une fonction
Vous allez maintenant définir une fonction appelée greet_user.
Dans Bash, vous définissez une fonction en écrivant son nom suivi de parenthèses (), puis en plaçant le bloc de code entre accolades {}.
Une fonction donne un nom réutilisable à un bloc de commandes. C’est ainsi que les scripts Shell deviennent plus lisibles : au lieu de voir des commandes brutes partout, vous commencez à voir des actions portant des noms explicites comme backup_files, check_disk ou greet_user.
La syntaxe est la suivante :
function_name() {
## Commands to execute
}
Ouvrez de nouveau votre script :
nano functions.sh
Ajoutez la définition de fonction suivante sous la ligne Shebang :
#!/bin/bash
greet_user() {
echo "Hello"
}
Important : à ce stade, vous avez seulement défini la fonction. Vous n’avez pas encore demandé au script de l’exécuter. Si vous exécutiez le script maintenant, il ne se passerait rien. C’est une source fréquente de confusion pour les débutants : définir une fonction ne l’exécute pas automatiquement.
Cette distinction est importante, car un script Shell est lu et exécuté dans l’ordre. La définition d’une fonction indique à Bash ce que signifie cette fonction, mais son contenu n’est exécuté que lorsque vous appelez la fonction plus tard.
Enregistrez le fichier et quittez l’éditeur pour le moment.
Appeler la fonction
Pour exécuter le code contenu dans une fonction, vous devez l’« appeler ». Dans Bash, il suffit d’écrire son nom sur une nouvelle ligne. Il n’est pas nécessaire d’utiliser des parenthèses lors de l’appel.
Cela peut sembler inhabituel aux débutants, car de nombreux langages de programmation utilisent des parenthèses lors des appels de fonctions. Dans Bash, greet_user est traité comme une commande. Si une fonction portant ce nom existe, Bash exécute son contenu.
Ouvrez le script :
nano functions.sh
Ajoutez l’appel de la fonction à la fin du fichier :
#!/bin/bash
greet_user() {
echo "Hello"
}
## The Main Logic starts here
greet_user
Enregistrez le fichier et quittez l’éditeur.
Exécutez maintenant le script :
./functions.sh
Lors de l’exécution du script, le shell rencontre la commande greet_user, trouve la définition de la fonction, exécute echo "Hello", puis poursuit l’exécution.
Dans ce sens, une fonction se comporte comme une commande personnalisée qui n’existe que dans le script ou la session Shell actuelle. C’est pourquoi les fonctions sont très utiles pour construire des actions de niveau supérieur à partir de commandes Shell plus simples.
Vous devez obtenir la sortie suivante :
Hello
Transmettre des arguments à la fonction
Une fonction qui fait toujours exactement la même chose, comme afficher « Hello », est limitée. Pour la rendre plus utile, vous pouvez lui transmettre des données. Ces données sont appelées des arguments.
Dans une fonction, vous pouvez accéder aux arguments à l’aide de variables spéciales comme $1, $2, etc., de la même manière qu’avec les arguments d’un script.
$1désigne le premier argument transmis à la fonction.$2désigne le deuxième argument, et ainsi de suite.
Ces paramètres sont distincts des paramètres positionnels propres au script au moment où la fonction s’exécute. En d’autres termes, les fonctions peuvent avoir leur propre petite interface d’entrée, ce qui facilite leur réutilisation avec des valeurs différentes.
Modifiez maintenant la fonction afin qu’elle salue une personne donnée.
Étape 1 : mettre à jour la définition de la fonction
Ouvrez le fichier :
nano functions.sh
Modifiez la fonction greet_user afin qu’elle utilise $1 au lieu d’une chaîne écrite en dur :
greet_user() {
echo "Hello $1"
}
Étape 2 : mettre à jour l’appel de la fonction
La fonction attend maintenant un argument. Vous devez donc le fournir lorsque vous l’appelez.
Remplacez l’appel greet_user par greet_user "LabEx".
Votre fichier doit maintenant ressembler à ceci :
#!/bin/bash
greet_user() {
echo "Hello $1"
}
greet_user "LabEx"
Enregistrez le fichier et quittez l’éditeur.
Étape 3 : tester le script
Exécutez de nouveau le script :
./functions.sh
La sortie doit maintenant être la suivante :
Hello LabEx
Vous avez ainsi créé une commande personnalisée qui reçoit une entrée et la traite. Vous pourriez appeler greet_user "Alice" ou greet_user "Bob" plus loin dans le script : la fonction s’adapterait alors à la valeur fournie.
Résumé
Dans ce lab, vous avez appris les bases des fonctions Bash :
- Définition : créer un bloc de code nommé à l’aide de
name() { ... }. - Appel : exécuter la fonction en écrivant simplement son nom.
- Arguments : transmettre des données à la fonction et y accéder via
$1,$2, etc.
Les fonctions constituent les éléments de base des scripts complexes. Elles vous permettent d’organiser votre logique, de réduire les répétitions et de rendre votre code plus facile à lire et à maintenir.



