Les fonctions, une fonctionnalité puissante de la programmation shell, sont un groupe de commandes organisées par fonctionnalité commune. Ces unités faciles à gérer, lorsqu'elles sont appelées, renvoient une seule valeur et ne produisent rien. L'utilisation d'une fonction implique deux étapes :
1. Définition de la fonction
2. Invoquer la fonction
Fonction shell contre alias shell
Les fonctions Shell et les alias sont différents sur deux points.
– les alias ne prennent pas d'arguments comme le font les fonctions.
– si un nom de commande est défini comme une fonction et un alias, l'alias a priorité.
Afficher les fonctions du shell
Pour afficher les définitions de fonction, utilisez la commande suivante :
# typeset -f list () { ls --color=auto -al | wc -l } num () { who | wc -l }
Définir une fonction
Une fonction est définie en utilisant le format général suivant :
# function [function name] { command; . . . command; }Remarque :Un espace doit apparaître après l'accolade ouvrante et avant l'accolade fermante.
L'exemple suivant définit une fonction appelée num qui affiche le nombre total d'utilisateurs actuellement connectés au système. La fonction num exécute la commande who, dont la sortie est ensuite dirigée vers la commande wc.
$ function num { who | wc -l; }
Fonctions shell dans les scripts shell
Les fonctions ne sont pas seulement utiles dans les scripts shell, mais sont également utilisées dans les situations de ligne de commande où un alias est inutilisable. Pour la démonstration, les fonctions du shell sont exécutées sur la ligne de commande pour illustrer le fonctionnement des fonctions.
L'exemple suivant crée une fonction appelée list qui affiche le nombre total de sous-répertoires et de fichiers dans le répertoire actuel. La fonction list appelle la commande ls, dont la sortie est dirigée vers la commande wc :
$ function list { ls -al | wc -l; }
$ list 34
Invoquer une fonction
Vous pouvez invoquer une fonction en entrant simplement le nom de la fonction sur la ligne de commande ou dans le script shell.
$ [function name]
Par exemple, pour invoquer la fonction num sur la ligne de commande, utilisez la commande ci-dessous.
$ num