Un guide rapide sur la façon de créer et d'appeler des fonctions dans Bash.
Une fonction est un bloc de code réutilisable utilisé pour effectuer une action. Avec les fonctions, nous obtenons une meilleure modularité et un haut degré de réutilisation du code.
Bash fournit des fonctions intégrées telles que echo
et read
, mais nous pouvons aussi créer nos propres fonctions.
Créer une fonction dans Bash
Il existe deux manières de créer des fonctions dans Bash :
Une façon consiste à utiliser simplement le nom de la fonction, par exemple :
functionName(){
// scope of function
}
Version compacte :
functionName(){ echo "hello"; }
Une autre façon est de déclarer une fonction en utilisant le function
mot-clé :
function functionName {
// scope of function
}
Version compacte :
function functionName { echo "hello"; }
Remarquez que nous n'avons pas besoin du ()
lors de l'utilisation du function
mot-clé pour créer une fonction.
Points importants à noter sur les fonctions Bash :
- Le code entre les accolades
{}
est le corps et la portée de la fonction - Lors de l'appel d'une fonction, nous utilisons simplement le nom de la fonction depuis n'importe où dans le script bash
- La fonction doit être définie avant de pouvoir être utilisée
- Lorsque vous utilisez la version compacte, la dernière commande doit avoir un point-virgule
;
Exemple :
Le code suivant crée une fonction qui imprime "Hello World" sur la console. Le nom de la fonction s'appelle printHello :
#!/bin/bash
printHello(){
echo "Hello World!"
}
Appeler une fonction dans Bash
Comment appelle-t-on la fonction ci-dessus ? Tout ce que vous avez à faire dans votre script bash est d'écrire le nom de la fonction et elle sera appelée.
Par exemple :
#!/bin/bash
printHello(){
echo "Hello World!"
}
# Call printHello function from anywhere in the script by writing the name
printHello
Sortie :
"Hello World"
Passer des arguments
La fonction ci-dessus printHello()
n'a aucun paramètre. Chaque fois que nous l'appelons, nous obtenons la sortie "Hello World". Et si nous voulions créer une fonction plus générique ? Par exemple, nous pouvons appeler la fonction avec un argument et elle imprimera ce que nous lui envoyons.
Il y a deux façons de procéder.
Nous pouvons d'abord modifier le printHello()
fonction pour imprimer les arguments qui lui sont passés :
Par exemple :
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny World
printAny DevQa
printAny I love coding!
Sortie :
Hello World
Hello DevQA
Hello I
Remarquez comment la troisième déclaration d'impression printAny I love coding!
n'a sorti que "Bonjour, je".
C'est parce que notre fonction est conçue pour ne prendre qu'un seul paramètre $1
. Le mot "J'aime coder!" est en fait 3 paramètres.
Si nous voulions tout imprimer, nous aurions besoin de mettre des guillemets autour du texte
Par exemple :
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny "I love coding!"
Sortie :
Hello I love coding
Autre exemple, nous pouvons également transmettre des chiffres :
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
Sortie :
Result is: 3
Valeurs renvoyées
Les fonctions bash peuvent également renvoyer des valeurs.
Par exemple :
#!/bin/bash
add() {
result=$(($1 + $2))
}
add 1 2
echo "The sum is: "$result
Sortie :
The sum is: 3
Une autre façon de renvoyer des valeurs à partir d'une fonction consiste à affecter le résultat à une variable qui peut être utilisée selon les besoins.
Par exemple :
#!/bin/bash
add () {
local result=$(($1 + $2))
echo "$result"
}
result="$(add 1 2)"
echo "The sum is: "$result
Sortie :
The sum is: 3