Incompréhension lecture fichier
Résolu
ginius
-
ginius -
ginius -
Bonjour tout le monde!
Je fais appel à vous car là je suis dans une impasse !! Je tente de faire de la lecture simple ligne de fichiers mais je n'y arrive pas. Le comportement est tout du moins incohérent. Je m'explique.
J'ai un fichier
J'ai également un script (normal) qui boucle sur la liste (via un simple
Mais là où c'est étrange, c'est qu'à chaque itération de ma boucle sur la liste, je tente de lire le fichier courant.
Ça ne marque pas sur le doc4, ça met que le doc2 et 1 n'existent pas...
Je ne comprends pas.
Voici mon code en question.
et voici ce que ça donne :
Si vous avez une piste sur mon problème (certainement, mon code mais je ne trouve pas) je suis preneur!!!
Après certains tests, j'en conclue qu'il n'itère pas sur les 2 premiers fichiers. Seulement le dernier déclaré...
Je fais appel à vous car là je suis dans une impasse !! Je tente de faire de la lecture simple ligne de fichiers mais je n'y arrive pas. Le comportement est tout du moins incohérent. Je m'explique.
J'ai un fichier
.ymlqui liste des chemins. (Dans ce cas facile, les 3 chemins présents sont dans la même dossier que le fichier
.yml). Volontairement, je ne nomme pas le
doc3.yml) Ah oui et pour info les
docx.ymlsont identiques en contenu.
racine---liste.yml
doc1.yml
doc2.yml
doc3.yml
doc4.yml
script.sh
J'ai également un script (normal) qui boucle sur la liste (via un simple
echoj'ai bien mon doc1,2 et 4 qui sortent en console).
Mais là où c'est étrange, c'est qu'à chaque itération de ma boucle sur la liste, je tente de lire le fichier courant.
Ça ne marque pas sur le doc4, ça met que le doc2 et 1 n'existent pas...
Je ne comprends pas.
Voici mon code en question.
#!/bin/bash v1="=poc" v2=":poc" MA_VARIABLE="$v1 $v2" MA_LISTE=liste.yml function boucleOnFile() { #LECTURE liste de fichier à parcourir echo lecture fichier $1 while read line || [ -n "$line" ]; do echo $line done < $1 } #LECTURE liste valeur de recherche for v in $MA_VARIABLE; do #LECTURE liste de fichier à parcourir while read lineDoc || [ -n "$lineDoc" ]; do boucleOnFile $lineDoc done < $MA_LISTE done
et voici ce que ça donne :
$ ./script.sh
lecture fichier doc1.yml
: No such file or directoryyml
lecture fichier doc2.yml
: No such file or directoryyml
lecture fichier doc4.yml
je suis un document
j'ai une adresse IP =poc
j'ai également une adresse :poc et :poc
lecture fichier doc1.yml
: No such file or directoryyml
lecture fichier doc2.yml
: No such file or directoryyml
lecture fichier doc4.yml
je suis un document
j'ai une adresse IP =poc
j'ai également une adresse :poc et :poc
Si vous avez une piste sur mon problème (certainement, mon code mais je ne trouve pas) je suis preneur!!!
Après certains tests, j'en conclue qu'il n'itère pas sur les 2 premiers fichiers. Seulement le dernier déclaré...
A voir également:
- Incompréhension lecture fichier
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
1 réponse
J'ai fini par trouver mon problème étant donné que ça ne marchait que sur le dernier élément de la liste je me suis douté qu'il s'agissait d'une mauvaise interprétation des saut de ligne (ahhhhhh les sauts de ligne, toute une histoire). Il me suffisait donc de faire un simple sed \n par rien pour avoir le nom du fichier 'correcte' voici mon code :
#!/bin/bash v1="=poc" v2=":poc" MA_VARIABLE="$v1 $v2" MA_LISTE=liste.yml function boucleOnFile() { #LECTURE liste de fichier à parcourir echo lecture fichier $1 while read line || [ -n "$line" ]; do echo $line done < $1 } #LECTURE liste valeur de recherche for v in $MA_VARIABLE; do #LECTURE liste de fichier à parcourir while read lineDoc || [ -n "$lineDoc" ]; do MON_DOC=$(echo $lineDoc | sed "s/\n//g") boucleOnFile $MON_DOC done < $MA_LISTE done