Fonctions dans les scripts Bash
Organisez votre code avec des fonctions afin de favoriser sa réutilisation et de rendre vos scripts plus clairs et faciles à maintenir.
Fonctions dans les scripts Bash est une leçon DevOps Bootcamp gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage DevOps Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours DevOps Bootcamp comprend 4 leçons au total.
Que sont les fonctions Bash ?
Dans un script Bash, une fonction est un bloc de code qui effectue une tâche précise. Considérez-la comme un mini-script intégré à votre script principal.
Les fonctions vous aident à :
- Réutiliser le code : écrire une logique une seule fois et l'appeler plusieurs fois.
- Organiser les scripts : décomposer les tâches complexes en unités plus petites et faciles à gérer.
- Améliorer la lisibilité : rendre votre script plus facile à comprendre et à maintenir.
Définir une fonction simple
Il existe deux façons courantes de définir une fonction dans Bash. Elles aboutissent au même résultat. La première syntaxe est la plus courante.
Essayez d'exécuter cet exemple. Il définit des fonctions, mais ne les appelle pas encore !
#!/bin/bash
# Method 1: The most common way
my_first_func () {
echo "Hello from my_first_func!"
}
# Method 2: Using the 'function' keyword
function my_second_func {
echo "Hello from my_second_func!"
}
echo "Functions defined, but not called."Appeler vos fonctions
La définition d'une fonction ne l'exécute pas. Pour exécuter le code qu'elle contient, il vous suffit de l'appeler par son nom, comme n'importe quelle autre commande.
Voyez comment nous appelons my_function après l'avoir définie :
#!/bin/bash
my_function () {
echo "This message is from inside the function."
}
echo "Script started."
my_function # Call the function here
echo "Script finished."Variables locales dans les fonctions
Par défaut, les variables définies dans une fonction Bash sont globales, ce qui signifie qu'elles peuvent être consultées et modifiées depuis n'importe quel endroit du script.
Pour éviter les effets secondaires involontaires et isoler vos fonctions, utilisez le mot-clé local pour déclarer une variable comme locale. Les variables locales n'existent qu'à l'intérieur de cette fonction.
#!/bin/bash
global_message="I'm a global message"
my_function () {
local func_message="I'm a local message"
global_message="I've been changed by the function!"
echo "Inside func: $func_message"
echo "Inside func: $global_message"
}
echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"Transmettre des arguments aux fonctions
Vous pouvez transmettre des informations à vos fonctions à l'aide d'arguments, comme avec les commandes shell classiques. Dans la fonction, ces arguments sont accessibles au moyen de variables spéciales :
$1,$2,$3... : arguments individuels$#: nombre total d'arguments$@: tous les arguments sous forme de chaînes distinctes
#!/bin/bash
greet_user () {
echo "Hello, $1!"
echo "You are $2 years old."
echo "Total arguments received: $#"
echo "All arguments: $@"
}
echo "Calling greet_user with two arguments:"
greet_user "Alice" 30
echo "\nCalling greet_user with one argument:"
greet_user "Bob"Statut de sortie d'une fonction (retour)
Comme toute commande, une fonction renvoie un statut de sortie. Par convention, 0 signifie que l'opération a réussi et toute valeur différente de zéro indique une erreur.
Vous utilisez le mot-clé return pour définir ce statut de sortie. Vous pouvez ensuite le vérifier à l'aide de la variable spéciale $?, juste après l'appel de la fonction.
#!/bin/bash
check_age () {
local age=$1
if [ "$age" -ge 18 ]; then
return 0 # Success: 18 or older
else
return 1 # Failure: under 18
fi
}
check_age 25
echo "Exit status for 25: $?"
check_age 16
echo "Exit status for 16: $?"
if check_age 20; then
echo "User is an adult."
else
echo "User is a minor."
fiRécupérer la sortie d'une fonction
Alors que return renvoie un statut de sortie, si vous souhaitez qu'une fonction produise une « valeur » pouvant être stockée dans une variable, la fonction doit envoyer cette valeur vers la sortie standard avec echo.
Vous récupérez ensuite cette sortie à l'aide de la substitution de commande, en plaçant l'appel de la fonction dans $(...).
#!/bin/bash
get_full_name () {
local first_name=$1
local last_name=$2
echo "$first_name $last_name" # Echo the full name
}
name="$(get_full_name "John" "Doe")"
echo "Full name captured: $name"
calculate_area () {
local length=$1
local width=$2
echo $((length * width))
}
area=$(calculate_area 10 5)
echo "Calculated area: $area"Exemple pratique : un journaliseur
Voici un exemple pratique de fonction réutilisable : un journaliseur simple. Cette fonction peut être appelée dans tout votre script pour afficher des messages avec un horodatage, ce qui facilite le débogage et le suivi.
#!/bin/bash
log_message () {
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
local message="$1"
echo "[$timestamp] $message"
}
log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."Bonnes pratiques pour les fonctions
Pour écrire des scripts clairs et faciles à maintenir avec des fonctions, tenez compte des conseils suivants :
- Restez simple : chaque fonction doit effectuer correctement une seule tâche.
- Choisissez des noms explicites : utilisez des noms descriptifs comme
validate_inputoucreate_backup. - Utilisez
local: utilisez toujourslocalpour les variables à l'intérieur des fonctions afin d'éviter les conflits. - Ajoutez des commentaires : expliquez ce que fait votre fonction, ses arguments et ce qu'elle renvoie.
- Validez l'entrée : si une fonction attend des arguments précis, vérifiez-les.
Vérifier les arguments d'une fonction
Évaluez votre compréhension de la transmission et de l'accès aux arguments dans les fonctions Bash.
Fonctions : récapitulatif et prochaines étapes
Excellent travail ! Vous maîtrisez désormais les fonctions Bash.
Vous avez étudié :
- la définition et l'appel de fonctions ;
- l'utilisation de
localpour la portée des variables ; - la transmission d'arguments avec
$1,$#,$@; - la définition du statut de sortie avec
return; - la récupération de la sortie avec
echoet la substitution de commande.
Les fonctions sont essentielles pour écrire des scripts Bash modulaires, réutilisables et faciles à maintenir. Continuez à vous entraîner pour rendre vos scripts plus puissants et mieux organisés !
Questions Fréquemment Posées
La leçon « Fonctions dans les scripts Bash » est-elle gratuite ?
Oui — le texte complet de « Fonctions dans les scripts Bash » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours DevOps Bootcamp, passe à CoddyKit PRO. Le cours DevOps Bootcamp comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fonctions dans les scripts Bash » ?
Organisez votre code avec des fonctions afin de favoriser sa réutilisation et de rendre vos scripts plus clairs et faciles à maintenir. Tu pratiques DevOps Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer DevOps Bootcamp ?
Aucune expérience préalable n'est requise. DevOps Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Fonctions dans les scripts Bash » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon DevOps Bootcamp ?
Oui. Chaque leçon DevOps Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Structures de boucles (for, while)
- Fonctions dans les scripts Bash
- Arguments et options des scripts ($@, $#, getopts)
- L’instruction case et la correspondance de motifs