50% de réduction tous les plans, durée limitée. À partir de $2.48/mo
il reste 11 minutes
Serveurs et système d'exploitation

Fonctions Bash expliquées : syntaxe, exemples et cas d'utilisation

Kelly Watson By Kelly Watson 11 minutes de lecture Mis à jour le 14 décembre 2025
Illustration 3D abstraite de blocs de code bleu brillant s'assemblant dans une structure modulaire, représentant les fonctions Bash

Les fonctions Bash regroupent les commandes associées sous un seul nom. Lorsque vous appelez ce nom, le bloc entier s'exécute. Vous pouvez transmettre des arguments pour personnaliser le comportement et renvoyer des valeurs pour communiquer les résultats. Cela garde votre code propre et facile à maintenir.

Linux domine les environnements de serveur à l'échelle mondiale, la maîtrise des fonctions Bash est donc plus que jamais importante. Les fonctions transforment les scripts compliqués en automatisation propre et réutilisable.

Ce guide vous guide à travers la syntaxe de base jusqu'aux cas d'utilisation avancés. Vous apprendrez à déclarer des fonctions, à transmettre des paramètres, à gérer les valeurs de retour et à découvrir dix exemples pratiques que vous pouvez utiliser dans vos propres scripts.

TL;DR

  • Les fonctions Bash sont nommées blocs de code que vous pouvez réutiliser dans vos scripts
  • Définir des fonctions à l'aide nom_fonction() { commandes ; } syntaxe
  • Passer des arguments en utilisant $1, $2, $3 paramètres de position
  • Les fonctions améliorent la lisibilité du code, la modularité et la maintenance
  • Utiliser retour pour quitter les fonctions et communiquer les codes d'état (0 = succès, non nul = échec)
  • Les fonctions peuvent être partagées entre les scripts en utilisant source or exporter -f
  • Des 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 script Bash ?

Illustration 3D d'un parchemin numérique avec un code Bash brillant qui s'écrit lui-même, représentant l'automatisation des scripts Bash.

Les scripts Bash sont une méthode d'automatisation des tâches utilisant le shell Bash. Il sert d'interface de ligne de commande par défaut pour Linux et reste un outil standard sur macOS. Un script Bash est un programme codé dans le langage de script Bash, qui peut être exécuté dans un terminal ou en tant que fichier de script autonome.

Avec L'utilisation du bureau Linux est en constante augmentation et le système d'exploitation dominant les environnements de serveur dans le monde entier, les compétences en script Bash sont devenues précieuses pour les professionnels de l'informatique. Le langage s'intègre bien aux outils DevOps tels que Docker, Kubernetes et les pipelines CI/CD.

Les scripts Bash vous permettent d'accomplir des tâches allant de commandes simples à des automatisations et administrations système complexes. Vous pouvez automatiser des tâches répétitives, développer des scripts de maintenance, créer 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ésordonnées organisées par une porte de traitement lumineuse, symbolisant le fonctionnement d'une fonction Bash, avec un espace vide sur la gauche.

Une fonction Bash peut être définie comme un ensemble de commandes définies dans un script Bash ou définies de manière interactive à l'invite de commande, selon le cas d'utilisation. Une fois définie, une fonction Bash peut être appelée plusieurs fois dans le script ou dans d'autres scripts, tout comme une commande shell classique.

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 transmettre des arguments à une fonction Bash, puis les utiliser dans la fonction pour effectuer des opérations. Les fonctions Bash renvoient des valeurs que vous pouvez utiliser ailleurs dans votre script.

Nous couvrirons plusieurs styles de mise en œuvre spécifiques, notamment fonction_simple pour la logique de base, entrées_simples pour la gestion des arguments et des structures avancées telles que fibonnaci_recursion.

Principes fondamentaux des fonctions Bash important pour tout administrateur système ou ingénieur DevOps travaillant avec l’automatisation. Les sections suivantes couvrent chacun de ces types en détail.

Pourquoi utiliser les fonctions Bash ?

Engrenage bleu brillant avec des symboles d'optimisation pilotant une machine à code, représentant l'efficacité et la vitesse gagnées grâce à l'utilisation des fonctions Bash.

Maintenant que la définition des fonctions Bash est abordée, passons en revue leurs principaux avantages. Cette section vous aide à comprendre où les fonctions sont les plus utiles.

Réutilisabilité

Vous créez une fonction Bash et vous disposez d’un outil puissant. Vous pouvez écrire un bloc de code une fois et le réutiliser plusieurs fois dans votre script ou même dans d'autres scripts.

Cela rend votre code plus efficace et vous fait gagner du temps en éliminant la duplication. La maintenance de votre code devient plus simple car il vous suffit de modifier la fonction au même endroit.

Lisibilité

Les scripts complexes peuvent être difficiles à déchiffrer. Les fonctions Bash résolvent ce problème en décomposant votre script en parties plus petites et plus gérables.

Chaque fonction répond à un objectif spécifique avec un nom descriptif qui explique son rôle. Cela vous aide, ainsi que les autres, à comprendre et à maintenir le code plus facilement.

Modularité

Les fonctions organisent votre code. Vous pouvez diviser la logique en modules plus petits, ce qui maintient la structure de votre script propre et facile à gérer.

Et si vous devez ajouter une nouvelle fonctionnalité, vous pouvez le faire sans toucher aux autres parties de votre script. Lorsqu'il est temps de supprimer ou de modifier des fonctionnalités, le reste de votre script reste intact.

Paramètres de la fonction Bash

Vous pouvez transmettre des arguments, ou paramètres, à vos fonctions. Ces arguments permettent à vos fonctions de s'adapter et d'effectuer différentes actions en fonction des entrées qu'elles reçoivent.

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

Comment et où utiliser les fonctions Bash ?

Organigramme en verre 3D montrant l'exécution du script se ramifiant dans un bloc fonctionnel et revenant, visualisant comment les fonctions Bash sont utilisées dans le flux logique.

Maintenant, soyons un peu techniques avec notre définition et commençons par un bref exemple de la façon de créer des fonctions Bash. La syntaxe suivante peut être utilisée dans les environnements basés sur Unix. Si vous travaillez sous Windows, vous pouvez installer Linux Bash sur Windows 10 à suivre avec ces exemples.

Création d'une fonction Bash

Commencez par utiliser la structure de commande suivante :

nom_fonction () {

    # commandes vont ici

}

 

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

saluer () {

    echo "Bonjour, 1 $!"

}

 

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

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

# Créer une sauvegarde de n'importe quel fichier

fichier_de sauvegarde () {

    cp « 1 $ » « 1 $.bak »

    echo "Sauvegarde créée : $1.bak"

}

 

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

assurer_dir () {

    si [ ! -d « 1 $ »] ; alors

        mkdir -p « 1 $ »

        echo « Répertoire créé : $1 »

    fi

}

 

# Enregistrer les messages avec horodatage

log_message () {

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

}

 

Vous définissez ces fonctions Bash personnalisées une fois et vous les appelez chaque fois que nécessaire tout au long de votre script.

Principes essentiels de la syntaxe des fonctions

Les fonctions se comportent comme des mini-scripts dans votre script principal, mais elles partagent la mémoire du shell. Gardez ces trois comportements spécifiques à l’esprit lorsque vous les rédigez.

Portée variable (locale ou mondiale)

Les variables à l'intérieur des fonctions sont globales par défaut. Si vous définissez ma_var="test" à l'intérieur d'une fonction, il remplace tout élément existant ma_var dans votre scénario. Utilisez toujours locale confiner les variables à la fonction évite les effets secondaires :

local my_var="valeur"

Paramètres de position

Les fonctions lisent les arguments en utilisant le même $1, $2, et $@ variables sous forme de scripts. Ceux-ci sont locaux à la fonction et réinitialisés lorsque la fonction se termine. Les arguments originaux du script ne sont pas accessibles dans 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. Le retour La commande définit uniquement un état de sortie (0-255) pour indiquer le succès ou l'échec. Pour renvoyer des données réelles (comme une chaîne ou un calcul), écho le résultat et capturez-le lors de l'appel de la fonction :

résultat=$(ma_fonction)

Top 10 des exemples de fonctions Bash utiles

Maintenant que vous comprenez les fonctions Bash et comment les créer, voici dix exemples pratiques que vous pouvez ajouter à vos scripts. Chaque fonction résout un problème courant et démontre la structure, les arguments et les valeurs de retour appropriés.

1. Fonction de sauvegarde de fichiers

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

fichier_de sauvegarde () {

    fichier local = "$1"

    sauvegarde locale = ”${fichier}.$(date +%Y%m%d_%H%M%S).bak”

    

    if [ -f « $fichier » ]; alors

        cp "$fichier" "$sauvegarde"

        echo "Sauvegarde créée : $backup"

        retourner 0

    autre

        echo "Erreur : fichier introuvable"

        retour 1

    fi

}

 

Usage: fichier_sauvegarde /etc/nginx/nginx.conf

2. Vérificateur d'annuaire

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

assurer_dir () {

    répertoire local = ”$1″

    

    si [ ! -d "$rép"]; alors

        mkdir -p « $rép »

        echo "Créé : $dir"

    fi

}

 

Usage: assurer_rép /var/log/myapp

3. Enregistreur horodaté

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

log_message () {

    niveau local = ”$1″

    message local = ”$2″

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

}

 

Usage: log_message « INFO » « Script démarré »

4. Moniteur d'espace disque

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

check_disk_space () {

    seuil local = ”${1:-80}”

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

    

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

        echo "Avertissement : utilisation du disque à ${usage}%"

        retour 1

    fi

    retourner 0

}

 

Usage: check_disk_space 90

5. Validateur d'entrée

Valide que l'entrée utilisateur n'est pas vide :

valider_input () {

    entrée locale = "$1"

    nom local = "$2"

    

    si [ -z "$entrée" ]; alors

        echo "Erreur : $name ne peut pas être vide"

        retour 1

    fi

    retourner 0

}

 

Usage: validate_input "$nom d'utilisateur" "Nom d'utilisateur"

6. Vérificateur d'état du service

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

check_service () {

    service local = ”$1″

    

    si systemctl est actif –quiet « $service » ; alors

        echo "$service est en cours d'exécution"

        retourner 0

    autre

        echo "$service n'est pas en cours d'exécution"

        retour 1

    fi

}

 

Usage: check_service nginx

7. Extracteur d'extensions de fichiers

Extrait l'extension d'un nom de fichier :

get_extension() {

    nom de fichier local = ”$1″

    echo "${nom de fichier##*.}"

}

 

Usage: ext=$(get_extension « document.pdf »)

8. Coupe-bordure

Supprime les espaces de début et de fin des chaînes :

trim_string() {

    str locale = "$1"

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

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

    écho "$str"

}

 

Usage: clean=$(trim_string ” bonjour tout le monde “)

9. Archiveur de fichiers sécurisé

Déplace un fichier vers un répertoire $HOME/.trash personnalisé au lieu de le supprimer définitivement. Il ajoute un horodatage au nom de fichier pour éviter d'écraser les sauvegardes précédentes.

safe_remove() {

    fichier local = "$1"

    poubelle locale = "$HOME/.trash"

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

    local new_name=”$(nom de base “$file”)_$(date +%s)”

    

    mkdir -p « $trash »

 

    if [ -e « $fichier » ]; alors

        mv "$fichier" "$trash/$nouveau_nom"

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

    autre

        echo "Erreur : $fichier introuvable"

        retour 1

    fi

}

 

Usage: safe_remove old_script.sh

 

10. Journaliste de statut

Illustre le mécanisme de retour de la fonction Bash pour la gestion des erreurs. La valeur de retour de la fonction Bash indique le succès (0) ou l'échec (différent de zéro) :

processus_data () {

    fichier local = "$1"

    

    si [ ! -f "$fichier"]; alors

        retour 1

    fi

    

    # Traiter le fichier

    chat «$fichier» | toilettes -l

    retourner 0

}

 

# Vérifiez la valeur de retour

process_data « data.txt »

si [ $? -éq 0 ]; alors

    echo "Traitement terminé"

autre

    echo "Échec du traitement"

fi

 

Le $? La variable capture l'état de sortie du dernier appel de commande ou de fonction.

Fonction But Caractéristique clé
fichier_sauvegarde Créer des sauvegardes de fichiers Dénomination horodatée
assurer_rép Gestion d'annuaire Crée si manquant
message_journal Enregistrement Préfixe d'horodatage
check_disk_space Surveillance du système Alertes de seuil
valider_entrée Validation des entrées Vérification de chaîne vide
check_service Surveillance des services Intégration système
obtenir_extension Analyse de chaînes Expansion des paramètres
trim_string Nettoyage des chaînes Suppression des espaces
safe_remove Suppression sécurisée Répertoire de la corbeille
données_processus Gestion des erreurs Valeurs de retour

Exécuter des fonctions Bash sur un VPS

Les fonctions Bash deviennent puissantes lorsqu'elles sont exécutées sur un environnement de serveur dédié. Notre Serveur virtuel Linux vous donne un accès root complet pour personnaliser votre environnement shell, créer des bibliothèques de fonctions à l'échelle du système et automatiser les tâches de gestion du serveur sans restrictions.

Avec un VPS, vous pouvez stocker des fonctions réutilisables dans /etc/profile.d/ pour tous les utilisateurs, planifiez des scripts basés sur des fonctions via des tâches cron et créez des pipelines d'automatisation pour le déploiement et la maintenance. Nous proposons des serveurs répartis sur plus de 12 sites dans le monde avec des vitesses réseau allant jusqu'à 40 Gbit/s et une mémoire DDR5, ce qui signifie une exécution de scripts plus rapide et un traitement des données plus fluide.

Ce niveau de contrôle fait d'un VPS idéal pour toute personne sérieuse dans les scripts shell et l'automatisation du système.

Conclusion

Les fonctions Bash sont essentielles à la création de scripts modulaires et réutilisables. Ils vous permettent de regrouper les commandes associées et d’encapsuler une logique complexe pour rendre votre code plus facile à lire et à maintenir. Si vous gérez une infrastructure cloud, automatisez des pipelines de déploiement ou gérez des tâches d'administration système de routine, les fonctions vous aident à garder vos scripts organisés et efficaces.

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

Combiné avec des structures de contrôle comme le Bash si déclaration, les fonctions vous fournissent les éléments de base d’une automatisation puissante. En utilisant les fonctions Bash dans vos scripts, vous pouvez écrire un code plus propre et plus modulaire, plus facile à comprendre et à maintenir.

FAQ

Les fonctions Bash peuvent-elles avoir des variables locales ?

Oui. Les fonctions Bash peuvent avoir des variables locales en utilisant le mot-clé local. Cela restreint la portée de la variable à la fonction, l’empêchant d’affecter les variables portant le même nom en dehors de la fonction.

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

Oui, les fonctions Bash peuvent être récursives. Bash a une taille de pile d'appels par défaut relativement petite, donc en fonction des fonctions récursives que vous avez en tête, vous devrez peut-être l'augmenter à l'aide de la commande ulimit -s avant l'exécution.

Puis-je utiliser les fonctions Bash dans d’autres scripts ?

Oui, vous pouvez partager des fonctions Bash entre scripts à l'aide de la commande source (ou de son raccourci .). En recherchant 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 pour rendre la fonction accessible.

Puis-je utiliser les fonctions Bash dans les pipelines ?

Oui, mais cela nécessite des étapes spécifiques pour les commandes externes. Dans un script, vous pouvez rediriger les données directement vers une fonction (par exemple, cat file | my_function). Cependant, 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 explicitement Bash (par exemple, xargs bash -c 'my_func "$@"').

Qu'est-ce qu'une fonction de script shell ?

Une fonction de script shell est un bloc de code défini dans un script shell qui répond à un objectif spécifique et peut être appelé à partir de différentes parties du script. Les fonctions offrent une grande valeur en termes de modularité du code, de meilleure réutilisabilité et de maintenance plus facile. Dans le contexte des scripts Bash, les fonctions sont encapsulées dans le script global.

Partager

Plus du blog

Continuez à lire.

Meilleures applications auto-hébergées que vous pouvez exécuter avec Cosmos Cloud Image de couverture avec des panneaux d'applications autour d'un tableau de bord Cosmos.
Serveurs et système d'exploitation

Meilleures applications auto-hébergées que vous pouvez exécuter avec Cosmos Cloud : fichiers, médias, mots de passe, automatisation et plus encore !

Peut-être avez-vous configuré Cosmos Cloud et souhaitez-vous maintenant voir quelles applications correspondent bien à celui-ci, ou peut-être n'avez-vous même pas encore choisi Cosmos et souhaitez-vous simplement voir dans quelle mesure il s'adapte à votre travail.

Nick SilverNick Silver 16 minutes de lecture
Couverture Portainer vs Cosmos Cloud pour la gestion des applications Docker avec diagramme de configuration hybride et opérations néon vs blocs d'accès.
Serveurs et système d'exploitation

Portainer vs Cosmos Cloud : la meilleure solution pour la gestion des applications Docker

Si vous connaissez déjà Docker et souhaitez simplement exécuter une pile d'applications plus propre et croissante, voici la réponse courte à Portainer vs Cosmos Cloud. Portainer est le meilleur choix pour la direction

Nick SilverNick Silver 14 minutes de lecture
Graphique de fonctionnalité Cosmos Cloud vs CasaOS vs Umbrel montrant trois chemins auto-hébergés dans un monde de réseau cloud abstrait.
Serveurs et système d'exploitation

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

La réponse courte est que CasaOS est toujours le point de départ le plus simple, Umbrel a la sensation la plus propre et Cosmos Cloud a plus de sens une fois que vous souhaitez un contrôle plus strict sur doma.

Nick SilverNick Silver 11 minutes 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.