Comment créer et appeler des fonctions dans Bash

Un guide rapide sur la création et l'appel de 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 degré élevé de réutilisation du code.

Bash fournit des fonctions intégrées telles que echo et read, mais nous pouvons également créer nos propres fonctions.




Créer une fonction dans Bash

Il existe deux façons de créer des fonctions dans Bash:

Une façon est d'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 de () lors de l'utilisation de 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 de n'importe où dans le script bash
  • La fonction doit être définie avant de pouvoir être utilisée
  • Lors de l'utilisation de 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 est appelé imprimerBonjour :

#!/bin/bash printHello(){
echo 'Hello World!' }


Appel d'une fonction dans Bash

Comment appelons-nous 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 example:

#!/bin/bash printHello(){
echo 'Hello World!' } # Call printHello function from anywhere in the script by writing the name printHello

Production:

'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». Mais que se passerait-il si nous voulions créer une fonction plus générique? Par exemple, nous pouvons appeler la fonction avec un argument et elle affichera ce que nous lui envoyons.

Il y a deux façons de le faire.


Tout d'abord, nous pouvons modifier le printHello() fonction pour afficher les arguments qui lui sont passés:

Par example:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny World printAny DevQa printAny I love coding!

Production:

Hello World Hello DevQA Hello I

Remarquez comment la troisième instruction d'impression printAny I love coding! seulement sorti 'Hello, I'.


En effet, notre fonction est conçue pour n'accepter qu'un seul paramètre $1. Le mot «J'adore coder!» est en fait 3 paramètres.

Si nous voulions tout imprimer, nous aurions besoin de mettre des guillemets autour du texte

Par example:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny 'I love coding!'

Production:

Hello I love coding

Autre exemple, nous pouvons également passer des chiffres:

#!/bin/bash add() {
result=$(($1 + $2))
echo 'Result is: $result' } add 1 2

Production:

Result is: 3

Valeurs renvoyées

Les fonctions Bash peuvent également renvoyer des valeurs.

Par example:

#!/bin/bash add() {
result=$(($1 + $2)) } add 1 2 echo 'The sum is: '$result

Production:

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 en cas de besoin.

Par example:

#!/bin/bash add () { local result=$(($1 + $2)) echo '$result' } result='$(add 1 2)' echo 'The sum is: '$result

Production:

The sum is: 3