Boucle **for** dans bash

bonjour ,

en lisant un cours d’introduction à bash j’ai vu ceci :

L’itération for possède plusieurs syntaxes dont les deux plus générales sont :

Première forme :

for var
do
suite_de_commandes
done

Lorsque cette syntaxe est utilisée, la variable var prend successivement la valeur de chaque
paramètre de position initialisé.

Exemple :

programme shell for_arg
#!/bin/bash # @(#) for_arg
for i
do
echo $i
echo « Passage a l’argument suivant … »
done

Ex :

$ for_arg un deux => paramètres de position initialisés
un
Passage a l’argument suivant …
deux
Passage a l’argument suivant …

Or pour obtenir cette sortie je dois ajouter :

  • soit for i in un deux
  • soit set un deux

ex :
1 #!/bin/bash
2 # @(#) for_arg
3 set un deux
4 for i
5 do
6 echo $i
7 echo « Passage a l’argument suivant … »
8 done

qui donne bien le même résultat

mm@Xfce:~$ bash for_arg
un
Passage a l'argument suivant ...
deux
Passage a l'argument suivant ...

comment l’auteur du cours fait-il pour se passer de ces instructions que j’ai rajoutées à son modèle ?

J’ai recatégoriser ton fil dans Programmation profites en pour mettre le lien du cours que tu suis :wink:

http://aral.iut-rodez.fr/fr/sanchis/enseignement/bash/

qui m’a été recommandé par @MicP ; avec raison car il est accessible à un débutant sans aucune connaissance préalable , ou si peu , même si l’exemple ci-dessus ne semble pas aller dans ce sens .

Il passe les passe en arguments du script, comme il l’écrit dans le cours:

bash for_arg un deux 

Une autre manière de faire aurait pu être:

for i in $@ ; do
    echo $i
    echo "passage à l'argument suivant"
done

Mais je n’avais jamais vu la syntaxe # @(#) for_arg, c’est toujours bon à savoir.

Bonjour

Introduction à la programmation en Bash → Chapitre 10. Structures de contrôle for et if

Donc, si le script bash ci-dessus est nommé for_arg et qu’il est exécutable
et si on lance son exécution en lui donnant la liste des arguments suivants :
"Premier argument" "Deuxième argument" "Troisième argument"

ça donnera çe qui suit :

michel@deb115:~$ ./for_arg "Premier argument" "Deuxième argument" "Troisième argument"
Premier argument
 Passage a l’argument suivant … 
Deuxième argument
 Passage a l’argument suivant … 
Troisième argument
 Passage a l’argument suivant … 
michel@deb115:~$ 

j’ai fini par comprendre ce qu’il faut faire au moment où on lance l’exécution du script , et même si @Sputnik93 m’avait donné la solution je n’avais pas été capable de le comprendre sans les détails … tout simplement parce que je ne rends pas mes fichiers exécutables avec chmod u+x et donc je n’avais pas compris la 2ème partie du paragraphe :

Ex :

$ for_arg un deux => paramètres de position initialisés .

C’est pas gagné !

merci pour ces deux réponses .