Programmation Bash/Fonctions

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


Comme pour tout autre langage, l'utilisation de fonctions facilite le développement de scripts et la structuration de ceux-ci.

Déclaration[modifier | modifier le wikicode]

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ètres[modifier | modifier le wikicode]

Appel[modifier | modifier le wikicode]

Pour appeler une fonction, on utilise la syntaxe suivante:

maFonction param_1 param_2 ... param_n

Paramètres passés à la fonction[modifier | modifier le wikicode]

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!

Fin[modifier | modifier le wikicode]

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 $?

Variables[modifier | modifier le wikicode]

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.