Boucle for

Fermé
Joey5 Messages postés 8 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008 - 27 sept. 2008 à 15:12
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 - 27 sept. 2008 à 16:16
Bonjour,

J'ai absolument besoin de votre aide ! Je dois faire un programme tout simple en shell pour lundi mais ça ne marche pas.

Par exemple, si je fais une boucle for dans mon programme ça ne lui convient jamais. Avec ce code :

for i in `ls repertoire/`
do
echo $i
done

il me sort : "erreur de syntaxe près du jeton echo inattendu"

Je pense quand même savoir faire des boucles for ! Mince alors !

Vous avez une idée ?
A voir également:

22 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
27 sept. 2008 à 15:15
'Jour,

Tu peux nous coller directement ton terminal ici? avec ton code source dedans?

Merki :)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 sept. 2008 à 15:16
Salut,
essaie
for i in $(ls repertoire)
do
echo $i
done 
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 sept. 2008 à 15:17
Salut,
for i in repertoire/*
do
echo $i
done 
;-))
0
Joey5 Messages postés 8 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 15:24
Oui voilà mon shell :

ordijo@ordijo-laptop:~/stage/moulinette$ cat script.sh
#!/bin/bash
for i in $(ls File) do
echo $i
doneordijo@ordijo-laptop:~/stage/moulinette$



C'est bien ça que tu veux ?
J'ai essayé avec l'autre commande ms c pareil !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
27 sept. 2008 à 15:26
Faut faire comme ça :

for i in $(ls File)
do
echo $i
done

Chaque mot clé sur une ligne différente donc sépare ton do comme j'ai fais d'avec la première ligne et ça devrait être bon.
0
Joey5 Messages postés 8 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 15:29
non j'ai le même problème mais là il me dit plus qu'il y a une erreur de syntaxe près du jeton echo mais près du jeton do

Je suis déséperée !
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 sept. 2008 à 15:29
Re,

alors tape dans une console
for i in $(ls repertoire/);do echo $i;done
et affiche ce que tu vois à l'écran
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 sept. 2008 à 15:29
On peut voir le contenu du répertoire File ?
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
27 sept. 2008 à 15:31
Ah oui au fait remplace #!/bin/bash par #!/bin/sh ca devrait mieux marcher
0
Joey5 Messages postés 8 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 15:32
J'ai tapé ce que tu me dis dans mon terminal et tout se passe bien ! J'ai bien la liste des fichiers qui s'affichent !
En fait, ça ne marche pas quand je le met dans un script shell !

Mon dossier File ne comporte que des fichiers pdf
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
27 sept. 2008 à 15:33
Regarde ce que je t'ai mis.
0
Joey5 Messages postés 8 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 15:33
J'ai déjà essayé avec #!/bin/sh et c'est le même résultat !
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 sept. 2008 à 15:34
Est-ce que ton répertoire File est bien dans le même répertoire d'où tu lances ton script ?
0
Joey5 Messages postés 8 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 15:34
oui oui tout à fait
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
27 sept. 2008 à 15:36
Voilà mon code qui fonctionne :

root@ks362344:~# cat test.sh
#!/bin/sh

for i in `ls ./`
do
echo $i
done

C'est le même exactement.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 sept. 2008 à 15:37
Re,

chez moi ça marche
#!/bin/bash

for i in `ls trash/`
do
echo $i
done



0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 sept. 2008 à 15:42
Ben chez moi aussi :
[tmpfs]$ cat foo.sh
#! /bin/bash

for i in ~jp/tmpfs/*
do
echo $i
done
[tmpfs]$ ./foo.sh
/home/jp/tmpfs/cleaner.sh
/home/jp/tmpfs/enonce_test_1_06-10-2007.pdf
/home/jp/tmpfs/foo.sh
/home/jp/tmpfs/foo.sh~
/home/jp/tmpfs/wireless_tools.29
/home/jp/tmpfs/wireless_tools.29.tar.gz
[tmpfs]$  
;-)
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292 > jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
27 sept. 2008 à 15:43
Il a un linux vivant !! il a un linux vivant !!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
27 sept. 2008 à 15:37
Essaie
sh -vx ton_script.sh
0
Joey5 Messages postés 8 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 15:44
ça me mat toujours la même erreur


bon sinon grande nouvelle ! Si je met tout le code sur la même ligne avec les séparateurs ; j'ai l'impression que je n'ai plus de problème

c'est génial la prog sans indenter ! huuummmm ! Je sais pas si je vais faire du shell souvent ! lol
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 292
27 sept. 2008 à 15:47
Je viens de reprendre ton code de début :

#!/bin/bash
for i in $(ls File) do
echo $i
done

j'ai juste descendu le do à la ligne en dessous et ça fonctionne :

#!/bin/bash
for i in $(ls File)
do
echo $i
done

Donc pour moi c'est un mystère.
0
Joey5 Messages postés 8 Date d'inscription samedi 27 septembre 2008 Statut Membre Dernière intervention 27 septembre 2008
27 sept. 2008 à 15:54
bon ba sans passer à la ligne ça fonctionne !
Pourtant j'ai eu l'habitude de faire du shell sur les ordis de la fac et j'ai jamais rencontré un problème pareil !

Merci quand même pour m'avoir aidé !
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
27 sept. 2008 à 15:56
Tu peux coller ton script sur Cjoint s'il te plait, merci ;-))
0