Scripting : les fonctions en Bash sous Linux
Sommaire
I. Présentation
Dans ce tutoriel, nous allons voir comment créer des fonctions dans le langage de script bash, accessible nativement sur Linux. La création de fonction est très pratique quand il s'agit d'économiser des bouts de code en les centralisant dans une fonction que nous pourrons appeler à tout moment dans le script. Quelques règles sont à savoir si l'on souhaite utiliser les fonctions en bash :
- Une fonction peut être placée n'importe où dans le script, au début comme à la fin, avant comme après son appel.
- Les variables qu'une fonction utilise sont globales par défaut, cela signifie qu'elles sont les mêmes hors et à l'intérieur d'une fonction
- Les fonctions, au même titre qu'un script entier, utilisent les variables spéciales.
Retrouvez nos différents tutoriels sur l'utilisation de Bash, sur cette page.
II. Création d'une fonction
Pour faire nos essais, nous allons créer un script bash dont voici le code :
echo "#!/bin/bash" > script.sh chmod +x script.sh
Nous créons ensuite notre première fonction "bonjour" qui se chargera d'afficher "bonjour" à l'écran :
Nous aurons donc cette sortie lors de l'exécution de notre script (commande "./script.sh") :
La fonction est donc tout ce qui est inscrit entre les deux accolades ( " { } " ). Nous pouvons définir autant de fonction qu'on le souhaite pourvu qu'elles aient toutes un nom différent.
III. Passage de paramètres
Pour rappel, les scripts bash ont une multitude de variables spéciales qui permettent de gérer les paramètres passés lors de leur appel. Nous pouvons donc appeler notre fonction avec des paramètres pour que celle-ci les traites avec les variables spéciales (récupérer le nombre de paramètres, récupérer la valeur du premier ou du second paramètre, etc...). Nous allons, par exemple, vouloir que notre fonction affiche les mots que nous lui passons en paramètre dans le script suivant :
Un paramètre est donc une valeur que l'on envoie à la fonction lors de son appel en lui disant : "tu vas traiter cette information". Il faut bien sûr que dans la fonction, on mette les variables spéciales adéquates au traitement (Ex : $1 pour récupérer la valeur du premier paramètre passé).
On voit donc que l'on passe deux informations à notre fonction "écrire" qui sont "Bonjour" et "Salut !". La fonction va recevoir respectivement ces paramètres dans "$1" et "$2", nous pourrons alors les afficher comme suivant :
IV. Les variables locales
Comme dit précédemment, les variables par défaut sont globales dans les fonctions, cela se vérifie de la façon suivante :
Nous aurons alors la sortie suivante :
Si l'on définit et initialise la variable hors de la fonction (en dehors des accolades), la valeur sera la même si on l'appelle (afficher son contenu, par exemple, avec "echo") dans la fonction qu'à l'extérieur de celle-ci.
De la même façon, si on modifie cette variable dans la fonction, la modification est valable pour tout le reste du script après l'appel de la fonction. Pour définir une variable comme locale (valable uniquement pour l'intérieur de la fonction), on utilisera le terme "local" avant la définition de la fonction comme suivant :
Nous aurons donc la sortie suivante :
On voit bien que la valeur de "$var1" n'a été modifié que dans la fonction. Désormais, vous connaissez les bases sur les fonctions en bash. L'utilisation qu'on en fait est généralement très variée, mais le principe de construction d'une fonction reste toujours le même.
Une fonction peut être placée n’importe où dans le script, au début comme à la fin, avant comme après son appel.
Correction : Une fonction peut être placée au début ou à la fin du script mais IMPÉRATIVEMENT AVANT son appel!
peut on créer une librairie de fonctions que l’on partagerait entre les différents script bash