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 ?

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 ?

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 ?

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 ?

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.