| Chapitre 5 : Le Shell |
En shell, on appelle "fonction" une séquence de commandes
repérable par un nom qui est le nom de la fonction.
Les commandes constituant une fonction sont exécutées dans le
cadre du shell courant, et non dans le cadre d'un shell fils,
comme c'est le cas pour un script ou pour une séquence de commandes placées entre parenthèses.
Syntaxe de la déclaration d'une fonction:
nom ( )
Remarque: Pas de déclaration d'arguments entre parenthèses ( ).
Une fonction doit être déclarée avant d'être appelée. Pour appeler une fonction,
il suffit d'utiliser son nom, sans les parenthèses.
Une fonction se termine soit après exécution de la dernière commande située avant l'accolade fermante, auquel cas le code de retour est celui de cette dernière commande, soit après exécution d'une commande return (ou 0 si cet argument est absent). Dans les deux cas, le code de retour de la fonction est affecté au paramètre $? du shell courant.
Attention: la commande return ne peut être utilisée qu'à l'intérieur d'une fonction
(remarquer l'analogie avec la fonction return du langage C).
Exemple:
#! /bin/sh
Les fonctions en shell
{
commandes
}
Comme pour un script shell,
l'appel d'une fonction peut être éventuellement suivi d'une liste d'arguments,
accessibles dans la fonction à l'aide des paramètres positionnels $1, $2, …, $9
(les paramètres $# et $* sont également initialisés).
#
# Exemple de script avec fonctions
usage ( )
{
echo "usage: $1 $2"
}
main ( )
{
if [ $# = 0 ] ; then
usage 'basename $0' "fichier"
exit 1
fi
}
main $ *