Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Réservez vos DVD et clé USB Ubuntu-fr (premières livraisons mi-mai)

Si vous avez des soucis pour rester connecté, déconnectez vous et reconnectez vous depuis ce lien en cochant le case
Me connecter automatiquement lors de mes prochaines visites.

M.A.J. en cours du forum possibilité de bug, nous faisons le maximum pour les résoudre au plus vite

#1 Le 30/04/2010, à 15: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, à 13:30)

Hors ligne

#2 Le 30/04/2010, à 15: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>.


bashfr.org(random);
<arciks1994> dou tu connai qel age j'ai ?

Hors ligne

#3 Le 30/04/2010, à 15: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, à 15:32)

Hors ligne

#4 Le 30/04/2010, à 15:34

iuchiban

Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier

utilie l'option -r pour ton read tongue

$ 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, à 15:38

Phoenixian

Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier

Oki super merci à toi !!! lol

Hors ligne

#6 Le 30/04/2010, à 16: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, à 11: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, à 11: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, à 11:59

iuchiban

Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier

credenhill a écrit :

hello
utiliser des "

while read -r ligne; do echo "$ligne"; done < test.txt

+1 big_smile


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, à 12: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 !

Hors ligne

#11 Le 17/05/2010, à 13:30

Phoenixian

Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier

Merci beaucoup tout marche nickel smile cool

Hors ligne

#12 Le 17/05/2010, à 13:38

credenhill

Re : [RESOLU] BASH - While - Lecture du caractère \ et * dans un fichier

Sciensous a écrit :

je dirai même plus: avec les "", l'option -r  n'est plus nécessaire !

si, à cause du \ (voir post # 1)

Hors ligne