Comparatif des variables $* et $@
1. Utilisation de $* et de $@ sans guillemets
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 # compatibilité du script : posix, ksh, bash
3
4 compteur=1 ;
5 # $* : tous les espaces sont vus comme séparateurs de mots
6 for arg in $* # Equivalent a $@
7 do
8 echo "Argument $compteur : $arg"
9 compteur=$(( compteur + 1 ))
10 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 vues comme séparateurs de mots, mais comme des caractères...