Maitriser les fonctions en Bash

Bash

Maitriser les fonctions en Bash

I. Présentation

Dans ce tutoriel, nous allons voir comment créer des fonctions dans le langage de script Bash, ce qui va permettre d’optimiser le code de vos scripts.

Que vous soyez un utilisateur Linux curieux ou un futur administrateur système, les fonctions vont vous aider à :

  • Éviter de répéter le même code plusieurs fois.
  • Rendre vos scripts plus clairs et plus faciles à comprendre.
  • Automatiser des tâches complexes en les découpant en petites étapes simples.

Il s’agit d’un élément à connaitre pour écrire des scripts Bash efficaces et complets. Les fonctions Bash sont simples à déclarer et à utiliser, c’est ce que nous allons voir ici.

Version originale de l’article : 25 avril 2013.

II. Qu’est-ce qu’une fonction en Bash ?

Une fonction est un bloc de code auquel vous donnez un nom. Quand vous appelez ce nom dans votre script, Bash exécute toutes les commandes du bloc, comme si vous aviez tapé chacune d’elles une par une.

Imaginez que vous écrivez une recette de cuisine. Au lieu de répéter à chaque fois “préchauffez le four à 180°C, beurrez un moule, cassez 3 œufs…“, vous pourriez écrire une seule fois “Préparer la base d’un gâteau” et simplement faire référence à cette étape chaque fois que vous en avez besoin. En programmation (Bash, mais pas uniquement), les fonctions jouent exactement ce rôle : elles vous permettent de regrouper plusieurs commandes sous un seul nom, pour les réutiliser facilement sans tout réécrire à chaque fois.

Exemple du quotidien : si vous devez souvent créer un dossier, y entrer, et créer un fichier dedans, vous pourriez écrire une fonction qui fait tout ça en une seule commande.

III. Comment créer une fonction en Bash ?

A. La syntaxe de base

La façon la plus courante pour créer une fonction en Bash est la suivante :


Dans ce bout de script Bash, j’ai mis en avant plusieurs éléments concernant notre fonction :

  • en orange : c’est le nom que vous donnez à votre fonction. Choisissez un nom clair, comme ou .
  • en rouge : les parenthèses , elles indiquent que c’est une fonction.
  • En vert : les accolades , tout ce qui est entre les accolades fait partie de la fonction.

Voici un exemple plus concret :


Pour utiliser (ou “appeler”) cette fonction, il suffit d’écrire son nom dans votre script :


B. Où placer les fonctions dans un script ?

En Bash, vous devez définir une fonction avant de l’utiliser. Pour vous souvenir de cet ordre, dites-vous que vous devez d’abord écrire la recette avant que quelqu’un d’autre puisse la suivre. Voici un exemple de script plus complet intégrant une fonction, puis son utilisation :


Si vous mettez l’appel avant la définition de la fonction, Bash ne saura pas de quoi vous parlez et affichera une erreur telle que celle-ci


III. Passer des informations à une fonction : les arguments

Les fonctions peuvent recevoir des arguments, c’est-à-dire des informations que vous leur passez pour qu’elles les utilisent. Cela permet de rendre nos fonctions plus dynamiques et de faire en sorte qu’elles soient vraiment utiles. Par exemple, une fonction pourrait prendre un prénom en argument et dire bonjour à cette personne.

Quand vous appelez une fonction, vous pouvez lui passer des arguments, séparés par des espaces :


À l’intérieur de la fonction, vous accédez aux arguments avec , , , etc. :

  • : Premier argument ().
  • : Deuxième argument ().
  • : Tous les arguments.
  • : Le nombre d’arguments.

Exemple :


Bien entendu, il faut penser à écrire un code robuste qui vérifie bien qu’un argument a été passé avant de l’utiliser. Sinon, vous vous retrouvez avec des erreurs :


IV. Variables locales vs variables globales

En Bash, les variables sont globales par défaut : elles existent dans tout le script. Mais vous pouvez les rendre locales à une fonction avec le mot-clé .

A. Variables globales

Dans l’exemple suivant, nous déclarons une variable à l’intérieur d’une fonction, puis la réutilisons en dehors de celle-ci.


B. Variables locales

Une fonction locale ne va, elle, exister qu’à l’intérieur de la fonction au sein de laquelle elle est déclarée, et non en dehors.


L’utilisation de variables locales est à connaitre, car il est probable que vous en ayez besoin pour les raisons suivantes :

  • Pour éviter que vos variables ne se mélangent entre elles.
  • Pour rendre votre code plus clair et plus facile à déboguer

V. Conclusion

Les fonctions sont un outil puissant pour rendre vos scripts Bash plus clairs, plus modulaires et plus faciles à maintenir. Il y aurait beaucoup à dire sur ces dernières et le langage de scripting Bash. Pour vous entrainer, voici quelques idées de fonctions Bash à développer :

  • Automatisez la création de dossiers pour vos projets (ex : )
  • Créez une fonction qui liste tous les fichiers d’un dossier dont l’extension est .
  • Écrivez une fonction qui sauvegarde un fichier en ajoutant la date du jour à son nom.

Enfin, n’hésitez pas à consulter l’ensemble de nos tutoriels sur le scripting Bash :

SOURCE