Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
947 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  commande unix for

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

commande unix for

n°1528755
nonau57
Posté le 15-03-2007 à 09:36:42  profilanswer
 

Bonjour,
 
Besoin d'un petit coup de pouce, que fait cette boucle dans un script shell:
for f in ${*:2}
 
 
merci

mood
Publicité
Posté le 15-03-2007 à 09:36:42  profilanswer
 

n°1528779
Elmoricq
Modérateur
Posté le 15-03-2007 à 10:26:46  profilanswer
 

man ksh

n°1530005
Sve@r
Posté le 17-03-2007 à 21:40:02  profilanswer
 

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.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  commande unix for

 

Sujets relatifs
Une commande shell unix pour faire un POST Http d'un fichier ?Lancer une commande unix dans CGI
Appel de commande shell unix en javaCommande UNIX - Comparaison
Commande Unix wc en Ccommande "join" sous unix
Peut on lancer une commande shell unix apartir d'un programme AdaProbleme d'execution de la commande Unix echo via le perl
[C/Unix] commande ls[PHP] Passer une commande système unix en php.
Plus de sujets relatifs à : commande unix for


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR