nonau57 a écrit :
Bonjour,
Besoin d'un petit coup de pouce, que fait cette boucle dans un script shell:
for f in ${*:2}
|
Plusieurs concepts dans cette syntaxe
1) le concept du "for"
for f in <liste d'éléments> => initialise une boucle d'autant d'itérations que ce qu'il y a d'élément dans "<liste d'éléments>"
A chaque tour de boucle, la variable "f" prendra comme valeur l'élément séquentiel de la liste
2) le concept de "$*" => variable qui contient la liste des arguments que tu passes à ton script
3) le concept des accolades qui encadrent un identificateur {x}
Tout d'abord, ça te permet d'isoler ton nom de variable par rapport à son contexte
Ex: prix=10
echo "Mon vélo coûte ${prix}F" => Le shell comprend ainsi que tu veux parler de la variable "prix" suivi de la lettre "F" et non de la variable "prixF"
Ensuite, cela permet d'intégrer des options particulières du style "ne prendre que les y premiers caractères à partir de la position x" => echo ${var:x:y}". Bon, ici, le concept "${*:2} ressemble à ça sauf qu'il n'y a pas le "y" donc j'ai un doute. A tout hasard je pense qu'il ne prendra que les caractères de la variable "$*" à partir de la position "2" jusqu'à la fin.
Donc tu regroupes ces 3 concepts et cela donne "initialisation d'une boucle sur tous les arguments passés au programme tout en ignorant les 2 premiers caractères de cet ensemble d'arguments.
Ex: si tu lances ton programme en y passant les arguments "toto titi tutu", cela devrait boucler sur les chaînes "to titi tutu". Mais pour en être sûr, il te suffit de tester en faisant dans le for un "echo $f"...
---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.