Sommaire

Comparatif des variables $* et $@

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 $*  
 images/fleche1.png 
 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 ...