Je suis débutant en programmation shell Unix et je trouve le symbole $@ dans une correction d'un exercice et je sais pas ça correspond à quoi , si quelqu'un la connait me aider et merci
Je suis débutant en programmation shell Unix et je trouve le symbole $@ dans une correction d'un exercice et je sais pas ça correspond à quoi , si quelqu'un la connait me aider et merci
Bonjour,
$@ contient les arguments passés à un script, sous forme d'un tableau.
$* contient les arguments passés à un script, mais d'une seule traite.
La différence ne s'affiche pas à l'écran, mais elle est utile dans certains cas.
Exemple :
Plus d'infos ici (en anglais).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #!/bin/ksh echo "ARGS : $@" echo "star ARGS : $*" echo "nb args : $#" exit 0
Pour clarifier:
$@ et $*sont strictement équivalents lorsqu'ils sont utilisés tels quels, ils correspondent au contenu des arguments séparés par des espaces. Le problème est qu'il est impossible de distinguer un espace séparant deux arguments d'un espace contenu dans un argument.
C'est quand ils sont utilisés entre guillemets ("$*" et "$@") que le résultat est différent.
"$*" retourne une chaîne de caractères unique contenant tous les arguments séparés par des espaces. Par très utile donc.
"$@" retourne une suite de chaîne de caractères contenant chacune un argument protégé par des guillemets, les espaces éventuellement contenus dans les arguments sont donc préservés.
C'est dans ce type de boucle que "$@" est utile:
comparé à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part for i in "*@"; do echo $i;done
Code : Sélectionner tout - Visualiser dans une fenêtre à part for i in $*; do echo $i; done
ɹǝsn *sıɹɐlos*
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager