#1 Le 30/04/2010, à 14:23
- Phoenixian
[RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
Bonjour.
Je viens de créer un script assez concéquent qui utilise beaucoup de boucle while lisant dans des fichiers.
Tout marche bien, sauf quand le caractètre \ est présent dans mes fichiers. Par exemple :
Fichier toto :
coucou\coucou
Fichier executable tata :
#!/bin/bash
while read ligne
do
echo $ligne
done < /home/thibaut/toto
Après l'execution de tata, voici le résultat :
coucoucoucou
Le caractère \ a disparu !!!!!!
Auriez-vous une idée pour que ce caractère ne disparaisse pas dans ce cas là ??
Merci beaucoup !
Dernière modification par Phoenixian (Le 17/05/2010, à 12:30)
Hors ligne
#2 Le 30/04/2010, à 14:25
- sputnick
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
"USE MORE QUOTES!" Learn the difference between " and ' and `. See <http://bash-hackers.org/wiki/doku.php/syntax/words> and <http://mywiki.wooledge.org/Quotes>.
On ne peut pas mettre d'array dans un string!
https://sputnick.fr/
Hors ligne
#3 Le 30/04/2010, à 14:30
- Phoenixian
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
Merci mais je pense que ceci ne m'aide en rien. J'ai essayé de mettre des quotes ou accent un peu partout, rien n'y fait.
Je précise que les fichiers que je manipule sont très gros, et que j'effectue seulement des lectures sur eux. Je ne peux pas les modifier pour agir sur l'interpréation du backslash.
Dernière modification par Phoenixian (Le 30/04/2010, à 14:32)
Hors ligne
#4 Le 30/04/2010, à 14:34
- iuchiban
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
utilie l'option -r pour ton read
$ while read -r ligne; do echo $ligne; done < test.txt
coucou\coucou
toto
titi
Parce que sinon, si les mots suivant le \ commencent par t, n ou autre, ça te donne un caractère spécial (tabulation, nouvelle ligne, ...)
C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.
Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.
Hors ligne
#5 Le 30/04/2010, à 14:38
- Phoenixian
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
Oki super merci à toi !!!
Hors ligne
#6 Le 30/04/2010, à 15:52
- johndo
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
Attention à la forme while read ligne; do ...; loop. Cette forme ne conserve pas les blancs en début et fin de ligne.
Suivant les informations que l'on peut avoir à traiter, cette perte peut être gênante.
Pour passer outre, 2 solutions (en tout cas, j'en connais 2, il y en a peut-être d'autres) :
1. Utiliser la forme while read; do ...; done et exploiter la variable REPLY
2. Modifier à vide la variable IFS : IFS="" while read ligne; do ...; done.
Hors ligne
#7 Le 17/05/2010, à 10:42
- Phoenixian
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
C'est encore moi pour une autre question. Après mon soucis avec le \, j'en ai un autre avec le catactère *.
Voici mon fichier toto :
coucou * coucou
Mon fichier tata est le même, avec l'option -r pour le while read.
Lorsque je lance tata, j'ai la liste des fichiers du dossier courant à la place de * . . .
Une option pour que ça m'affiche l'étoile et non pas ma liste de fichier ?
Merci !
Hors ligne
#8 Le 17/05/2010, à 10:56
- credenhill
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
hello
utiliser des "
while read -r ligne; do echo "$ligne"; done < test.txt
Hors ligne
#9 Le 17/05/2010, à 10:59
- iuchiban
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
hello
utiliser des "while read -r ligne; do echo "$ligne"; done < test.txt
+1
C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.
Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.
Hors ligne
#10 Le 17/05/2010, à 11:23
- Sciensous
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
je dirai même plus: avec les "", l'option -r n'est plus nécessaire !
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
En ligne
#11 Le 17/05/2010, à 12:30
- Phoenixian
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
Merci beaucoup tout marche nickel
Hors ligne
#12 Le 17/05/2010, à 12:38
- credenhill
Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier
je dirai même plus: avec les "", l'option -r n'est plus nécessaire !
si, à cause du \ (voir post # 1)
Hors ligne