50 % de réduction sur tous les plans, durée limitée. À partir de $2.48/mo
11 min restantes
Serveurs et OS

Les fonctions Bash expliquées : syntaxe, exemples et cas d'usage

Kelly Watson By Kelly Watson 11 min de lecture Mis à jour le 14 déc. 2025
Illustration 3D abstraite de blocs de code bleus lumineux s'assemblant en une structure modulaire, représentant les fonctions Bash

Les fonctions Bash regroupent des commandes liées sous un même nom. Quand vous appelez ce nom, le bloc entier s'exécute. Vous pouvez passer des arguments pour adapter le comportement et renvoyer des valeurs pour communiquer les résultats. Votre code reste ainsi propre et facile à maintenir.

Linux domine les environnements serveur à l'échelle mondiale, ce qui rend la maîtrise des fonctions Bash plus indispensable que jamais. Les fonctions transforment des scripts désordonnés en automatisations propres et réutilisables.

Ce guide vous accompagne de la syntaxe de base jusqu'aux cas d'usage avancés. Vous apprendrez à déclarer des fonctions, passer des paramètres, gérer les valeurs de retour, et vous découvrirez dix exemples concrets à réutiliser dans vos propres scripts.

Résumé rapide

  • Les fonctions Bash sont des blocs de code nommés que vous pouvez réutiliser tout au long de vos scripts
  • Déclarez les fonctions avec la syntaxe function_name() { commands; } syntaxe
  • Passez des arguments via les $1, $2, $3 paramètres positionnels
  • Les fonctions améliorent la lisibilité, la modularité et la maintenabilité du code
  • Utilisez return pour quitter les fonctions et communiquer des codes de statut (0 = succès, valeur non nulle = échec)
  • Les fonctions peuvent être partagées entre scripts grâce à source or export -f
  • Les exemples pratiques incluent la sauvegarde de fichiers, la surveillance des disques, la validation des entrées et la vérification des services

Qu'est-ce que le scripting Bash ?

Illustration 3D d'un parchemin numérique avec du code Bash lumineux qui s'écrit de lui-même, symbolisant l'automatisation par les scripts Bash.

Le scripting Bash est une méthode d'automatisation de tâches via le shell Bash. Il constitue l'interface en ligne de commande par défaut de Linux et reste un outil standard sur macOS. Un script Bash est un programme écrit dans le langage Bash, qui peut être exécuté dans un terminal ou en tant que fichier script autonome.

Avec l'utilisation de Linux en poste de travail en constante progression et le système d'exploitation qui domine les environnements serveurs à l'échelle mondiale, la maîtrise du scripting Bash est devenue un atout précieux pour les professionnels de l'informatique. Le langage s'intègre naturellement aux outils DevOps tels que Docker, Kubernetes et les pipelines CI/CD.

Le scripting Bash vous permet d'accomplir des tâches allant de simples commandes à l'automatisation avancée et à l'administration système. Vous pouvez automatiser des tâches répétitives, développer des scripts de maintenance, construire des pipelines de déploiement, gérer des systèmes logiciels et manipuler des données.

Qu'est-ce qu'une fonction Bash ?

Illustration numérique futuriste montrant des données de ligne de commande désorganisées structurées par une porte de traitement lumineuse, symbolisant le fonctionnement d'une fonction Bash, avec un espace vide à gauche.

Une fonction Bash peut être définie comme un ensemble de commandes, déclarées soit dans un script Bash, soit de manière interactive à l'invite de commande, selon le cas d'usage. Une fois définie, une fonction Bash peut être appelée plusieurs fois dans le script ou dans d'autres scripts, comme n'importe quelle commande shell.

Les fonctions Bash vous permettent de créer des blocs de code réutilisables capables d'effectuer des opérations complexes, d'organiser votre code et de simplifier vos scripts. Vous pouvez passer des arguments à une fonction Bash, puis les utiliser au sein de la fonction pour réaliser des opérations. Les fonctions Bash retournent des valeurs exploitables ailleurs dans votre script.

Nous aborderons plusieurs styles d'implémentation spécifiques, notamment simple_function pour la logique de base, simple_inputs pour la gestion des arguments, ainsi que des structures avancées telles que fibonnaci_recursion.

Fondamentaux des fonctions Bash sont essentiels pour tout administrateur système ou ingénieur DevOps travaillant avec l'automatisation. Les sections suivantes détaillent chacun de ces types.

Pourquoi utiliser les fonctions Bash ?

Engrenage bleu lumineux avec des symboles d'optimisation pilotant une machine à code, illustrant le gain d'efficacité et de rapidité apporté par les fonctions Bash.

Maintenant que les fonctions Bash sont définies, passons en revue leurs principaux avantages. Cette section vous aide à identifier où les fonctions sont les plus utiles.

Réutilisabilité

Une fonction Bash bien écrite est un outil puissant. Vous écrivez un bloc de code une seule fois et vous pouvez le réutiliser autant de fois que nécessaire, dans le même script ou dans d'autres.

Votre code gagne en efficacité et vous économisez du temps en évitant les duplications. La maintenance est simplifiée : il suffit de modifier la fonction à un seul endroit.

Lisibilité

Les scripts complexes peuvent être difficiles à déchiffrer. Les fonctions Bash règlent ce problème en découpant votre script en parties plus petites et plus faciles à gérer.

Chaque fonction remplit un rôle précis et porte un nom descriptif qui l'explique clairement. Cela facilite la compréhension et la maintenance du code, pour vous comme pour les autres.

Modularité

Les fonctions structurent votre code. Vous pouvez découper la logique en modules indépendants, ce qui garde votre script clair et facile à gérer.

Si vous devez ajouter une fonctionnalité, vous le faites sans toucher aux autres parties du script. De même, supprimer ou modifier une fonctionnalité ne perturbe pas le reste.

Paramètres des fonctions Bash

Vous pouvez passer des arguments, ou paramètres, à vos fonctions. Ces arguments permettent à vos fonctions de s'adapter et d'effectuer différentes actions selon les entrées reçues.

Cela ouvre de nombreuses possibilités tout en rendant vos fonctions plus polyvalentes. Au lieu d'écrire un code similaire plusieurs fois, vous écrivez une seule fonction qui gère différentes entrées.

Comment et où utiliser les fonctions Bash ?

Diagramme de flux 3D en verre montrant l'exécution d'un script qui se ramifie vers un bloc de fonction puis revient, illustrant l'utilisation des fonctions Bash dans un flux logique.

Passons maintenant à la pratique avec un court exemple de création de fonctions Bash. La syntaxe suivante s'applique aux environnements Unix. Si vous travaillez sur Windows, vous pouvez installer Linux Bash sur Windows 10 pour suivre ces exemples.

Créer une fonction Bash

Commencez par utiliser la structure de commande suivante :

function_name () {

    # les commandes vont ici

}

 

Une fois la fonction créée, vous pouvez l'utiliser à tout moment dans votre code. Voici un exemple concret :

greet () {

    echo "Hello, $1!"

}

 

Appelez cette fonction avec Bonjour le monde pour afficher "Hello, World !" Le $1 représente le premier argument passé à la fonction.

Voici quelques exemples pratiques que vous pouvez utiliser dans vos propres scripts :

# Créer une sauvegarde d'un fichier

backup_file () {

    cp "$1" "$1.bak"

    echo "Backup created: $1.bak"

}

 

# Vérifier si un répertoire existe, le créer si ce n'est pas le cas

ensure_dir () {

    if [ ! -d "$1" ]; then

        mkdir -p "$1"

        echo "Created directory: $1"

    fi

}

 

# Journaliser les messages avec horodatage

log_message () {

    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"

}

 

Vous définissez ces fonctions Bash personnalisées une seule fois, puis vous les appelez partout où vous en avez besoin dans votre script.

Syntaxe des fonctions : l'essentiel

Les fonctions se comportent comme des mini-scripts au sein de votre script principal, mais elles partagent la mémoire du shell. Gardez ces trois comportements spécifiques à l'esprit lorsque vous les écrivez.

Portée des variables (locale vs. globale)

Les variables définies dans les fonctions sont globales par défaut. Si vous définissez my_var="test" dans une fonction, elle écrase toute variable my_var existante dans votre script. Utilisez toujours local pour limiter les variables à la fonction et éviter les effets de bord :

local my_var="value"

Paramètres positionnels

Les fonctions lisent leurs arguments avec les mêmes variables $1, $2, et $@ que les scripts. Ces variables sont locales à la fonction et réinitialisées à sa sortie. Les arguments d'origine du script ne sont pas accessibles à l'intérieur de la fonction, sauf si vous les transmettez explicitement.

Valeurs de retour

Les fonctions Bash ne renvoient pas de données comme les fonctions Python ou JavaScript. La commande return ne fait que définir un code de sortie (0-255) pour indiquer le succès ou l'échec. Pour renvoyer des données concrètes (une chaîne de caractères ou un résultat de calcul), echo le résultat et capturez-le lors de l'appel de la fonction :

result=$(my_function)

Top 10 des exemples de fonctions Bash utiles

Maintenant que vous maîtrisez les fonctions Bash et leur création, voici dix exemples concrets à intégrer dans vos scripts. Chaque fonction résout un problème courant et illustre la structure, les arguments et les valeurs de retour.

1. Fonction de sauvegarde de fichier

Crée une sauvegarde horodatée de n'importe quel fichier :

backup_file () {

    local file="$1"

    local backup="${file}.$(date +%Y%m%d_%H%M%S).bak"

    

    if [ -f "$file" ]; then

        cp "$file" "$backup"

        echo "Backup created: $backup"

        return 0

    else

        echo "Error: File not found"

        return 1

    fi

}

 

Usage : backup_file /etc/nginx/nginx.conf

2. Vérification de répertoire

Vérifie si un répertoire existe et le crée si nécessaire :

ensure_dir () {

    local dir="$1"

    

    if [ ! -d "$dir" ]; then

        mkdir -p "$dir"

        echo "Created: $dir"

    fi

}

 

Usage : ensure_dir /var/log/myapp

3. Journalisation horodatée

Ajoute des horodatages aux messages de journal pour le débogage :

log_message () {

    local level="$1"

    local message="$2"

    echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $message"

}

 

Usage : log_message "INFO" "Script started"

4. Surveillance de l'espace disque

Vérifie l'utilisation du disque et avertit si elle dépasse un seuil :

check_disk_space () {

    local threshold="${1:-80}"

    local usage=$(df / | tail -1 | awk '{print $5}' | tr -d '%')

    

    if [ "$usage" -gt "$threshold" ]; then

        echo "Warning: Disk usage at ${usage}%"

        return 1

    fi

    return 0

}

 

Usage : check_disk_space 90

5. Validateur de saisie

Vérifie que la saisie utilisateur n'est pas vide :

validate_input () {

    local input="$1"

    local name="$2"

    

    if [ -z "$input" ]; then

        echo "Error: $name cannot be empty"

        return 1

    fi

    return 0

}

 

Usage : validate_input "$username" "Username"

6. Vérificateur d'état de service

Vérifie si un service est en cours d'exécution et indique son état :

check_service () {

    local service="$1"

    

    if systemctl is-active --quiet "$service"; then

        echo "$service is running"

        return 0

    else

        echo "$service is not running"

        return 1

    fi

}

 

Usage : check_service nginx

7. Extracteur d'extension de fichier

Extrait l'extension d'un nom de fichier :

get_extension () {

    local filename="$1"

    echo "${filename##*.}"

}

 

Usage : ext=$(get_extension "document.pdf")

8. Outil de coupe de cordes

Supprime les espaces en début et en fin de chaîne :

trim_string () {

    local str="$1"

    str="${str#"${str%%[![:space:]]*}"}"

    str="${str%"${str##*[![:space:]]}"}"

    echo "$str"

}

 

Usage : clean=$(trim_string " hello world ")

9. Archiveur de fichiers sécurisé

Déplace un fichier vers un répertoire $HOME/.trash personnalisé au lieu de le supprimer définitivement. Un horodatage est ajouté au nom du fichier pour éviter d'écraser les sauvegardes existantes.

safe_remove() {

    local file="$1"

    local trash="$HOME/.trash"

    # Ajouter un horodatage pour éviter d'écraser les fichiers existants

    local new_name="$(basename "$file")_$(date +%s)"

    

    mkdir -p "$trash"

 

    if [ -e "$file" ]; then

        mv "$file" "$trash/$new_name"

        echo "Déplacé vers l'archive : $file -> $trash/$new_name"

    else

        echo "Erreur : $file introuvable"

        return 1

    fi

}

 

Usage : safe_remove old_script.sh

 

10. Rapporteur d'état

Illustre le mécanisme de retour des fonctions Bash pour la gestion des erreurs. La valeur de retour indique le succès (0) ou l'échec (valeur non nulle) :

process_data () {

    local file="$1"

    

    if [ ! -f "$file" ]; then

        return 1

    fi

    

    # Traiter le fichier

    cat "$file" | wc -l

    return 0

}

 

# Vérifier la valeur de retour

process_data "data.txt"

if [ $? -eq 0 ]; then

    echo "Traitement terminé"

else

    echo "Échec du traitement"

fi

 

La $? La variable capture le code de sortie de la dernière commande ou fonction appelée.

Fonction Rôle Caractéristique principale
backup_file Créer des sauvegardes de fichiers Nommage horodaté
ensure_dir Gestion des répertoires Crée le répertoire s'il est absent
log_message Journalisation Préfixe d'horodatage
check_disk_space Surveillance système Alertes de seuil
validate_input Validation des entrées Vérification de chaîne vide
check_service Surveillance de service Intégration Systemd
get_extension Analyse de chaîne Expansion de paramètre
trim_string Nettoyage de chaîne Suppression des espaces
safe_remove Suppression sécurisée Répertoire de corbeille
process_data Gestion des erreurs Valeurs de retour

Exécuter des fonctions Bash sur un VPS

Les fonctions Bash prennent toute leur puissance dans un environnement serveur dédié. Notre Linux VPS vous donne un accès root complet pour personnaliser votre environnement shell, créer des bibliothèques de fonctions accessibles à l'ensemble du système, et automatiser la gestion du serveur sans aucune restriction.

Avec un VPS, vous pouvez stocker des fonctions réutilisables dans /etc/profile.d/ pour tous les utilisateurs, planifier des scripts basés sur ces fonctions via des tâches cron, et construire des pipelines d'automatisation pour le déploiement et la maintenance. Nos serveurs sont disponibles dans 12 emplacements à travers le monde, avec des vitesses réseau allant jusqu'à 40 Gbps et une mémoire DDR5, ce qui se traduit par une exécution plus rapide des scripts et un traitement des données plus fluide.

Ce niveau de contrôle fait du VPS le choix idéal pour quiconque prend le scripting shell et l'automatisation système au sérieux.

Conclusion

Les fonctions Bash sont essentielles pour créer des scripts modulaires et réutilisables. Elles permettent de regrouper des commandes liées et d'encapsuler une logique complexe, ce qui rend votre code plus lisible et plus facile à maintenir. Que vous gériez une infrastructure cloud, automatisiez des pipelines de déploiement ou preniez en charge des tâches d'administration système courantes, les fonctions gardent vos scripts organisés et efficaces.

Dans cet article, nous avons couvert les bases des fonctions Bash : comment les définir et les appeler, dix exemples pratiques, et des cas d'usage courants pour vous aider à démarrer vos propres projets d'automatisation.

Combinées avec des structures de contrôle comme Instruction conditionnelle if en Bash, les fonctions vous donnent les bases nécessaires pour créer des automatisations puissantes. En utilisant des fonctions Bash dans vos scripts, vous pouvez écrire un code plus propre et plus modulaire, plus facile à comprendre et à maintenir.

Questions fréquemment posées

Les fonctions Bash peuvent-elles avoir des variables locales ?

Oui. Les fonctions Bash peuvent avoir des variables locales grâce au mot-clé local. Cela limite la portée de la variable à la fonction, l'empêchant d'affecter des variables portant le même nom en dehors de celle-ci.

Les fonctions Bash peuvent-elles être récursives ?

Oui, les fonctions Bash peuvent être récursives. La taille par défaut de la pile d'appels en Bash est relativement petite, donc selon la profondeur de récursion envisagée, vous devrez peut-être l'augmenter avec la commande ulimit -s avant l'exécution.

Puis-je utiliser des fonctions Bash dans d'autres scripts ?

Oui, vous pouvez partager des fonctions Bash entre scripts grâce à la commande source (ou son raccourci .). En sourçant un fichier contenant vos définitions de fonctions, vous rendez ces fonctions disponibles dans le script appelant. Pour les processus enfants, utilisez export -f function_name afin de rendre la fonction accessible.

Puis-je utiliser des fonctions Bash dans des pipelines ?

Oui, mais cela nécessite quelques étapes spécifiques pour les commandes externes. Dans un script, vous pouvez rediriger des données directement vers une fonction (par ex., cat file | my_function). En revanche, des commandes comme xargs ou find -exec s'exécutent dans un nouvel environnement. Pour y utiliser une fonction, vous devez l'exporter (export -f my_func), puis invoquer Bash explicitement (par ex., xargs bash -c 'my_func "$@"').

Qu'est-ce qu'une fonction dans un script shell ?

Une fonction dans un script shell est un bloc de code défini au sein du script, qui remplit un rôle précis et peut être appelé depuis différentes parties de ce script. Les fonctions apportent une vraie valeur ajoutée en termes de modularité, de réutilisabilité et de facilité de maintenance. Dans le contexte des scripts Bash, les fonctions sont encapsulées dans le script global.

Partager

À lire sur le blog

Continuez la lecture.

Image de couverture des meilleures applications auto-hébergées compatibles avec Cosmos Cloud, avec des panneaux d'applications autour d'un tableau de bord Cosmos.
Serveurs et OS

Les meilleures applications auto-hébergées compatibles avec Cosmos Cloud : fichiers, médias, mots de passe, automatisation et plus encore !

Maybe vous avez installé Cosmos Cloud et cherchez maintenant des applications qui s'y intègrent bien, ou peut-être que vous n'avez pas encore adopté Cosmos et que vous voulez juste voir si ça correspond à votre flux de trava

Nick ArgentNick Argent 16 min de lecture
Illustration de couverture pour Portainer vs Cosmos Cloud pour la gestion d'applications Docker, avec un schéma de configuration hybride et des blocs ops/accès en néon.
Serveurs et OS

Portainer vs Cosmos Cloud : quelle solution pour gérer vos applications Docker ?

Si vous connaissez déjà Docker et cherchez simplement la meilleure façon de gérer une pile applicative en croissance, voici la réponse directe à la question Portainer vs Cosmos Cloud. Portainer est le choix le plus solide pour une gest

Nick ArgentNick Argent 14 min de lecture
Illustration principale pour Cosmos Cloud vs CasaOS vs Umbrel, montrant trois approches auto-hébergées au sein d'un réseau cloud abstrait.
Serveurs et OS

Cosmos Cloud vs CasaOS vs Umbrel : quelle plateforme auto-hébergée correspond à votre configuration ?

En bref : CasaOS reste le point de départ le plus accessible, Umbrel offre l'expérience la plus soignée et la mieux organisée, et Cosmos Cloud devient le meilleur choix dès que vous souhaitez un contrôle plus fin sur les dom

Nick ArgentNick Argent 11 min de lecture

Prêt à déployer ? À partir de 2,48 $/mois.

Cloud indépendant, depuis 2008. AMD EPYC, NVMe, 40 Gbps. Remboursement sous 14 jours.