Pour simplifier et rendre plus lisible les scripts, bash permet l'utilisation de fonctions. Une fonction est un sous-programme qui peut être appelé n'importe quand, et aussi souvant que nécéssaire. On peut lui envoyer des variables, et elle peut nous retourner un résultat. A l'intérieur d'une fonction, on peut créer une variable locale (qui n'existe qu'à l'intérieur de la fonction) avec le mot clé "local".
On accède aux paramètres de la fonction de la même façon que dans un script, avec les variables $#, $*, $@, $1, $2, etc. Seul $0 ne change pas (pour rappel, $0 affiche le nom du script).
Pour renvoyer un valeur au programme principal, c'est le mot clé "return" qui est utilisé. Sinon, c'est le résultat de la dernière commande exécutée qui est renvoyé.
Une fonction peut s'appeler elle-même. On dit qu'elle est récursive.
Attention : il faut utiliser la commande "exit" avec prudence, car elle ne termine pas seulement la fonction, mais aussi le script !
Pour déclarer une fonction, soit on met un nom suivit de "()", soit on met le mot clé "function" suivit d'un nom (sans parenthèses). Puis on met le contenu de la fonction entre crochets.
Remarque 1 : on ne doit pas mettre à la fois le mot clé "function" et les parenthèses, bien que certains shells récents l'acceptent.
Remarque 2 : il n'y a pas d'importance à utiliser l'une ou l'autre syntaxe, mais la syntaxe avec les parenthèses est plus portable avec les très vieux shells.
Voici la syntaxe :
Et comme rien ne vaut un exemple, le voici. Dans cet exemple, on déclare deux fonctions ; l'une calcule le carré d'un nombre, l'autre sa factorielle.
Ce qui nous donne à l'écran :
On remarque bien que le programme principal est beaucoup plus lisible que si on n'avait pas fait appel aux fonctions. Et bien sûr, si on doit faire appel plusieurs fois à la même fonction, l'interêt est encore plus évident.
<< page précédente
7_Les autres structures |
page suivante >>
9_Pour aller plus loin |
Dernière mise à jour : 10 janvier 2010