Programmation Bash/Fonctions
Comme pour tout autre langage, l'utilisation de fonctions facilite le développement de scripts et la structuration de ceux-ci.
Déclaration
modifierPour déclarer une fonction, il existe différentes méthodes, nous pouvons toujours utiliser la syntaxe suivante malgré le fait qu'elle soit dépréciée :
function maFonction()
{
instructions
}
La déclaration d'une fonction doit toujours se situer avant son appel.
Le mot-clé function
est optionnel :
maFonction()
{
instructions
}
Les deux syntaxes ont leur avantage :
- L'absence du mot-clé permet au script d'être compatible avec les shells Bourne et Korn.
- La présence du mot-clé permet d'éviter une collision de nom avec les alias.
Appel et paramètres
modifierAppel
modifierPour appeler une fonction, on utilise la syntaxe suivante:
maFonction param_1 param_2 ... param_n
Paramètres passés à la fonction
modifierCes 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 d'une fonction
function 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
modifierUne 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
modifierOutre 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.