next up previous contents Next: Développements. Up: Scripts de shell avancés. Previous: Liste de commandes.   Table des matières  

21.2 Paramètres spéciaux: $?, $*, ...

Le contenu d'une variable ordinaire (appelons-la VARNAME) peut être obtenu en faisant précéder le nom de la variable d'un signe $, comme dans $VARNAME. Les variables communément utilisées comme PATH et les variables spéciales PWD et RANDOM sont discutées au chapitre 10. D'autres cas sont documentés dans le paragraphe qui suit (il s'agit d'extraits de la page de man de bash). [Brian Fox et Chet Ramey doivent être remerciés pour leur contribution. (annotation de P. Sheer)]

Paramètres spéciaux.

Le shell traite plusieurs variables (ou paramètres) de manière spéciale. Ces paramètres peuvent seulement être lus; il n'est pas possible de les modifier.

$*
s'applique aux paramètres de position en commençant la numérotation à partir d'1 (c'est-à-dire, aux arguments en ligne de commande passés au script de shell, avec $1 comme premier argument, $2 pour le second, etc.). Quand l'extension ($*) apparaît dans des guillemets doubles, elle se comporte comme un mot unique bien que chaque paramètre soit séparé par le premier caractère de la variable spéciale IFS (InternalFieldSeparator). [NdT: la variable IFS est souvent un espace]. Cela signifie que ``$*'' est équivalent à ``$1c$2c...'', où c est le premier caractère de la valeur de la variable IFS. Si la variable IFS n'est pas définie, les paramètres sont séparés par des espaces. Si IFS est nulle, les paramètres sont joints sans espacements.

$@
s'applique aux paramètres de position, en commençant la numérotation à partir de 1. Lorsque le développement se produit entre des guillemets doubles, chaque paramètre se comporte comme un mot séparé. C'est-à-dire que``$@'' est équivalent à ``$1'' ``$2'' ... Lorsqu'il n'y a pas de paramètres de position, ``$@'' et $@ ne s'applique à rien (donc, ils sont éliminés). [Remarque: ceci est utile pour écrire des scripts de shell d'interfaces qui ne font qu'ajouter un argument].

$#
se développe pour fournir le nombre de paramètres de position en mode décimal .

$?
renvoie le code de retour du tube [NdT: il s'agit d'un tube associé à un enchaînement de tubes, appelé en anglais pipeline] le plus récemment exécuté en avant-plan [c'est-à-dire au code de retour de la dernière commande].

$-
se développe en une liste des options courantes du shell telles que spécifiées par la commande interne set ou attribuées par le shell lui-même (comme dans l'option -i).

$$
se développe en le PID du shell courant. Dans un sous-shell [où les commandes sont placées entre ()], [NdT: ceci est une note pour donner un exemple de sous-shell en relation avec l'usage de la commande tar pour copier un répertoire intitulé origine (en l'occurrence) d'un disque vers un autre. Il est entendu que le chemin chemin_vers_repertoire_origine est le chemin absolu donnant accès à ce répertoire]:

cd /repertoire_destination

(cd /chemin_vers_repertoire_origine; tar cf - *) | tar xvf - cette variable s'applique au PID du shell courant et non du sous-shell.

$!
se développe en le PID de la commande en arrière-plan (ou commande asynchrone) la plus récemment exécutée. [C'est-à-dire qu'après avoir exécuté une commande en arrière-plan avec commande&, la variable $! donnera l'ID du processus].

$0
se développe pour donner le nom du shell ou du script de shell. Ce paramètre est fixé lors de l'initialisation du shell. Si bash est invoqué avec un fichier de commande,$0 contiendra le nom de ce fichier. Si bash est démarré avec l'option -c,$0 contiendra le premier argument (s'il y en a un) après la chaîne à exécuter. Autrement, ce paramètre contiendra le chemin utilisé pour invoquer bash, tel que donné par l'argument zéro.[Notez que basename $0 est un moyen élégant d'obtenir le nom de la commande courante, isolément].

$_
lors de démarrage du shell, ce paramètre contient le chemin absolu du shell ou du script de shell en cours d'exécution, tel que passé sur la ligne de commande. Subséquemment, la variable est développée en le dernier argument de la commande précédente. Elle correspond aussi au chemin d'accès complet de chaque commande exécutée et, elle est placée dans l'environnement exporté vers cette commande. Lors de la vérification de l'arrivée de courriel, ce paramètre contient le nom du fichier de courriel en cours de vérification.


next up previous contents Next: Développements. Up: Scripts de shell avancés. Previous: Liste de commandes.   Table des matières  
1-01-2006