1. Utilisation de $* et de $@
Ce chapitre présente d’autres fonctionnalités
utilisées en programmation shell qui viennent compléter
celles abordées au chapitre Les bases de la programmation
shell.
Les variables $* et $@ contiennent
la liste des arguments d’un script shell. Lorsqu’elles ne sont pas
entourées par des guillemets, elles sont équivalentes.
Exemple
Le script test_var1.sh affiche
la valeur de chaque argument de la ligne de commande :
$ nl test_var1.sh
1 #! /usr/bin/ksh
2 compteur=1 ;
3 for arg in $*# Equivalent à $@
4 do
5 echo "Argument $compteur : $arg"
6 ((compteur+=1))
7 done
$
Voici un exemple d’appel du script :
$ test_var1.sh a b c "d e f" g
Première étape : le shell courant traite les caractères
de protection avant de lancer le script. À ce niveau, les
espaces internes à "d e f" sont protégés et
ne sont pas vus comme séparateurs de mots, mais comme des caractères
quelconques.
Deuxième étape : le shell enfant qui interprète
le script substitue $* (ou $@) par a b c d e f g.
for arg in $@
ou
for arg in $*
for arg in a b c d e f g
Les espaces qui étaient protégés
au niveau du shell de travail ne le sont plus au niveau du shell
enfant. Voici le résultat de l’exécution du script ...