Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#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

Haut de page ↑