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...

Pour consulter la suite, découvrez le livre suivant :
couv_EI6PRO.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Exercices
Suivant
Substitution de variables