Ouvrir le menu principal

Programmation Bash/Fonctions

< Programmation Bash

DéclarationModifier

Pour déclarer une fonction, on utilise la syntaxe suivante:

maFonction(param_1, param_2,...)
{
  instructions
}

La déclaration d'une fonction doit toujours se situer avant son appel.

Appel et paramètresModifier

AppelModifier

Pour appeler une fonction, on utilise la syntaxe suivante:

maFonction param_1 param_2 ... param_n

Paramètres passés à la fonctionModifier

Ces paramètres sont bien sûrs optionnels. À l'intérieur de la fonction, ils sont représentés, respectivement, par les variables $1, $2,... , $n. $0 représente toujours le nom du script (et non de la fonction) qui s'exécute.

Le nombre de paramètres passés à une fonction est représenté par la variable $#

Exemple:

#!/bin/bash

# déclaration dune fonction
maFonction() 
{ local varlocal="je suis la fonction"
  echo "$varlocal"
  echo "Nombres de paramètres : $#"
  echo $1
  echo $2
}

# appel de ma fonction
maFonction "Hello" "World!"

Ce qui donne le résultat suivant:

je suis la fonction
Nombres de paramètres : 2
Hello
World!

FinModifier

Une fonction termine son exécution lorsqu'elle n'a plus d'instructions à exécuter ou lorsqu'elle rencontre l'instruction return ou exit. Ces instructions peuvent être suivies d'un entier positif, qui correspond à la valeur de retour de la fonction. Si aucune valeur n'est spécifiée, c'est la valeur 0 qui est renvoyée.

La valeur de retour de la dernière fonction appelée est stockée dans la variable $?

VariablesModifier

Outre les paramètres, une fonction peut utiliser plusieurs variables:

  • Réutiliser toutes les variables globales du script. Par défaut dans un script shell, les variables sont déclarées comme étant globales.
  • En déclarer de nouvelles.
  • Déclarer des variables locales. Pour déclarer une variable localement, il faut la faire précéder du mot clé local. Une telle variable ne sera utilisable que dans la fonction qui la déclare durant l'exécution de celle-ci mais sera considérée comme globale (donc connue) par les fonctions appelées à partir de cette fonction (après la déclaration locale de la variable).

Pour éviter d'accéder en lecture à une variable n'ayant pas d'existence, on peut inscrire la commande set -u en début de script.