Comment utiliser les fonctions en Bash
- Définir les fonctions en Bash
- Portée des variables en Bash
- Valeurs de retour d’une fonction en mode Bash
- Passage d’arguments à une fonction Bash
Une fonction est l’un des aspects les plus importants de tout langage de programmation, et elle rend notre code réutilisable et lisible. Le même code utilisé de manière répétée est écrit à l’intérieur d’une fonction. Et lorsque nous avons besoin du bloc de code, nous appelons simplement la fonction définie.
Définir les fonctions en Bash
Pour définir les fonctions dans Bash
, nous pouvons utiliser l’une des deux approches suivantes:
Dans cette approche, nous écrivons le nom de la fonction suivi de parenthèses. Ensuite, nous définissons les fonctions à l’intérieur des accolades. Les fonctions utilisant ce format peuvent être définies en utilisant n’importe lequel des formats:
function_name(){
statements
}
function_name() { statements }
Dans cette approche, nous spécifions le mot-clé function
avant le nom de la fonction.
function_name(){
statements
}
function_name() { statements }
Les énoncés à l’intérieur des accolades déterminent ce que fait la fonction. Le nom de la fonction n’a rien à voir avec ce que fait la fonction, mais nous devons rendre les noms des fonctions descriptifs. Définir la fonction ne fera rien. Pour exécuter les commandes dans la définition de la fonction, nous devons appeler la fonction.
Pour appeler la fonction en Bash
, nous utilisons le nom de la fonction.
#! /bin/bash
greet(){
echo 'Hello, Folks. Welcome to DelftStack!'
}
greet
Production:
Hello, Folks. Welcome to DelftStack!
Ici, nous définissons la fonction au début avec le nom greet
et ensuite nous appelons la fonction. Lorsque nous appelons la fonction, les instructions à l’intérieur d’une définition de fonction sont exécutées, et nous voyons donc Hello, Folks. Welcome to DelftStack!
imprimé dans le terminal.
Nous pouvons également définir la fonction en utilisant une autre approche comme:
#! /bin/bash
function greet(){
echo 'Hello, Folks. Welcome to DelftStack!'
}
greet
Production:
Hello, Folks. Welcome to DelftStack!
Nous devons nous assurer que nous définissons toujours la fonction avant de l’appeler.
Portée des variables en Bash
La portée des variables peut être globale ou locale en Bash comme dans d’autres langages de programmation. Cependant, la portée par défaut des variables est toujours globale, même si elle est déclarée dans la portée de la fonction. Nous devons utiliser le mot-clé local
pour rendre une variable locale.
#! /bin/bash
gvar1=1
gvar2=2
change_variables() {
local gvar1=10
gvar2=7
echo "Inside Function: gvar1: $gvar1, gvar2: $gvar2"
}
echo "Before executing function: gvar1: $gvar1, gvar2: $gvar2"
change_variables
echo "After executing function: gvar1: $gvar1, gvar2: $gvar2"
Production:
Before executing function: gvar1: 1, gvar2: 2
Inside Function: gvar1: 10, gvar2: 7
After executing function: gvar1: 1, gvar2: 7
Ici, gvar1
et gvar2
déclarés en haut sont des variables globales.
Dans la fonction, gvar1
est déclaré comme une variable locale puisque nous utilisons le mot-clé local
avec gvar1
alors que gvar2
fait toujours référence à une variable globale puisqu’elle n’a pas de mot-clé local
. Ainsi, la valeur de gvar2
est modifiée globalement par la fonction alors que la valeur de gvar1
est modifiée uniquement à l’intérieur de la fonction.
Valeurs de retour d’une fonction en mode Bash
Contrairement à d’autres langages de programmation, Bash ne permet pas de retourner les valeurs de la fonction. La valeur retournée par la fonction Bash est le statut de la dernière instruction exécutée dans la fonction. Le nombre 0
représente le succès, tandis que le nombre de 1-255
représente l’échec. Nous pouvons spécifier le statut de sortie de la fonction en utilisant le mot-clé return
. L’instruction return
termine également la fonction.
#! /bin/bash
return_value(){
echo "This function returns 20!"
return 30
echo "After return statement"
}
return_value
echo $?
Production:
This function returns 20!
30
Ici, nous pouvons voir que la fonction return_value
retourne la valeur 30
en utilisant l’instruction return
, et la valeur est assignée à la variable $?
.
Nous pouvons également noter que la fonction se termine après que l’instruction return
soit exécutée, car les commandes situées en dessous de l’instruction return
ne sont pas exécutées.
Si nous voulons retourner une valeur à partir d’une fonction, nous pouvons assigner la valeur à une variable globale et accéder à la variable depuis l’extérieur de la fonction pour récupérer la valeur.
#! /bin/bash
send_message(){
message_from_function="Hello From the function!"
}
send_message
echo $message_from_function
Production:
Hello From the function!
Dans le programme, nous assignons la valeur à retourner à la variable globale message_from_function
et accédons ensuite à la valeur retournée de la variable.
Passage d’arguments à une fonction Bash
Pour passer des arguments à une fonction Bash, nous mettons simplement les arguments après la fonction. Si nous voulons passer plus d’un argument à une fonction, nous séparons les arguments par un espace. Pour éviter les erreurs d’interprétation des arguments, nous pouvons les mettre entre guillemets.
On accède aux paramètres avec $1
$2
et ainsi de suite en fonction de leur position. $0
représente le nom de la fonction tandis que $#
contient le nombre d’arguments de position dans la fonction.
#! /bin/bash
send_message(){
message_from_function="Hello $1 "
}
send_message
echo $message_from_function "Delft!"
Production:
Hello Delft!
Ici, l’argument Delft!
est passé dans la fonction et on y accède par le paramètre $1
, et on obtient Hello Delft!
comme sortie finale de la fonction.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn