Fonctions dans Bash

Fumbani Banda 30 janvier 2023
  1. Fonctions dans Bash
  2. Définir des fonctions dans Bash
  3. Exemples de fonctions
  4. Portée variable dans la fonction Bash
  5. Valeurs de retour dans la fonction Bash
  6. Passer des arguments aux fonctions Bash
Fonctions dans Bash

Ce tutoriel explique les fonctions de base de Bash et leur utilisation dans les scripts Bash en utilisant des fonctions sans le mot-clé function et des fonctions avec le mot-clé function.

Fonctions dans Bash

Une fonction dans Bash est un ensemble de commandes qui accomplissent une tâche spécifique. Nous pouvons utiliser les fonctions encore et encore ; cela permet d’éviter d’écrire le même ensemble de commandes à plusieurs reprises. Les fonctions rendent également les scripts plus lisibles.

Généralement, les fonctions prennent des données, les traitent et renvoient une valeur. Cependant, dans les scripts bash, les fonctions ne renvoient que l’état de sortie de la dernière commande.

L’état de sortie est une valeur comprise entre 0 et 255. L’état de sortie, 0, signifie que la commande a été exécutée avec succès.

Définir des fonctions dans Bash

Dans Bash, il existe deux notations pour déclarer des fonctions. La première notation utilise le nom de la fonction entre parenthèses, suivi d’accolades, comme indiqué ci-dessous.

name_of_function(){
  command1
  command2
}

La notation ci-dessus peut également être écrite sur une seule ligne.

name_of_function(){command1; command2} 

La deuxième notation utilise le mot-clé function pour déclarer la fonction, suivi de parenthèses et d’accolades, comme indiqué ci-dessous.

function name_of_function(){
  command1
  command2
}

Nous déclarons également la fonction sur une ligne comme indiqué ci-dessous.

function name_of_function(){command1; command2}

Exemples de fonctions

Le script ci-dessous illustre l’utilisation d’une fonction dans un script bash. Tout d’abord, nous définissons la fonction et l’exécutons plus tard en l’appelant. Le script ci-dessous utilise la première syntaxe consistant à utiliser le nom de la fonction suivi de parenthèses et d’accolades.

Nous définissons une fonction nommée greet; les accolades indiquent le corps de la fonction. Nous avons deux instructions echo dans le corps de la fonction qui impriment du texte sur la sortie standard.

Pour appeler une fonction dans Bash, vous tapez le nom de la fonction. La dernière ligne du script ci-dessous appelle la fonction greet.

#!/bin/bash

greet(){
   echo  "Hello, World!"
   echo  "Bash is Fun!"
}

greet

Le script imprime la sortie suivante sur la sortie standard.

Hello, World!
Bash is Fun!

Le script bash ci-dessous définit une fonction en utilisant le mot-clé function suivi du nom de la fonction, add. La fonction add additionne deux nombres, 3 et 7, à l’aide de la commande expr et affecte la somme à la variable var. La commande echo affiche la valeur de la variable var sur la sortie standard.

La dernière ligne avec le nom de la fonction est utilisée pour appeler la fonction pour exécution.

#!/bin/bash
function add(){
   var=`expr 3 + 4`
   echo $var
}

add

Portée variable dans la fonction Bash

Dans Bash, toutes les variables sont des variables globales par défaut. Nous pouvons accéder aux variables globales n’importe où dans le script Bash, même à l’intérieur d’une fonction. Les variables définies dans une fonction sont également des variables globales dans Bash.

Pour définir une variable locale à l’intérieur d’une fonction dans Bash, nous utilisons le mot-clé local.

Le script ci-dessous illustre la portée des variables en définissant des variables globales, x et y, et une variable locale à l’intérieur de la fonction add appelée sum.

#!/bin/bash

x=2
y=4

function add(){
   local sum
   sum=`expr $x + $y`
   echo $sum
}

add

D’après le script ci-dessus, les variables x et y sont des variables globales. Nous pouvons y accéder n’importe où dans le script. La variable sum est une variable locale car le mot clé local a été utilisé pour la définir.

Nous ne pouvons accéder qu’à une variable locale dans le corps de la fonction défini. Dans ce cas, la variable locale sum ne peut être utilisée que dans le corps de la fonction add. L’accès à la variable locale sum en dehors du corps de la fonction add génère une erreur.

Valeurs de retour dans la fonction Bash

Les fonctions bash ne renvoient pas de valeurs lorsqu’elles sont appelées comme les fonctions dans d’autres langages de programmation. Les fonctions bash renvoient uniquement l’état de sortie de la dernière commande à exécuter.

L’état de sortie peut être n’importe quelle valeur entre 0 et 255. L’état de sortie, 0, signifie que la commande a été exécutée avec succès. On peut accéder au statut de sortie en imprimant la valeur de $?.

Lorsque la fonction add est appelée, elle exécute les commandes à l’intérieur de son corps. La première ligne affecte le résultat de la commande expr à la variable sum.

La deuxième ligne imprime la valeur de la variable sum sur la sortie standard à l’aide de la commande echo. La dernière ligne imprime la valeur de l’état de sortie sur la sortie standard.

L’état de sortie imprimé est celui de la commande qui a été exécutée précédemment ; le code d’état de sortie est pour la commande echo qui affiche la valeur de la variable sum.

#!/bin/bash

add(){
    sum=`expr 2 + 3`
    echo "Sum: $sum"
    echo "Exit Status: $?"
}

add

L’exécution du script affiche la sortie suivante sur le terminal standard.

Sum: 5
Exit Status: 0

Passer des arguments aux fonctions Bash

Pour passer des arguments à une fonction bash, placez les arguments à côté du nom de la fonction séparés par un espace lors de l’appel de la fonction. La notation $n permet d’accéder aux paramètres.

Le n représente la position de l’argument à côté du nom de la fonction. Dans notre cas, $1 représente le premier argument, 1, et $2 représente le deuxième argument, 2.

function add(){
   sum=`expr $1 + $2`
   echo $sum
}

add "1" "2"

La variable $0 est réservée pour représenter le nom de la fonction, et le $# stocke le nombre d’arguments positionnels passés à la fonction.

Le script ci-dessus produit la sortie suivante sur la sortie standard.

3
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub