15/11/2024

Bash

Scripting : les fonctions en Bash sous Linux

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 :

BashFonction01

Nous aurons donc cette sortie lors de l'exécution de notre script (commande "./script.sh") :

BashFonction02

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 :

BashFonction03

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 :

BashFonction04

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 :

BashFonction05

Nous aurons alors la sortie suivante :

BashFonction06

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 :

BashFonction07

Nous aurons donc la sortie suivante :

BashFonction08

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.

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “Scripting : les fonctions en Bash sous Linux

  • 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!

    Répondre
  • peut on créer une librairie de fonctions que l’on partagerait entre les différents script bash

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.