Echo d'une variable contenant un caractère de contrôle (/t)

Résolu
tbeghain Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -  
 tbeghain -
Bonjour,
J'ai un fichier qui contient "C:\temp".
J'affecte une variable TOTO pour lui donner le contenu de mon fichier
TOTO=$(<mon_fichier)

Lorsque je fais echo de cette variable, l'affichage est "C: emp" car il considère le \t comme le caractère de tabulation. Comment faire pour que l'affichage reflète exactement le contenu du fichier ? Merci


A voir également:

2 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Essaye avec
echo -E ${TOTO}
.
0
tbeghain
 
Bonjour et merci, mais ça ne fonctionne pas, j'ai comme résultat à la commande echo -E $TOTO :

-E c: emp

Je suis sous AIX.
0
tbeghain
 
Je pense que je dois passer par sed pour doubler le / pour lui dire de ne pas le prendre en compte, mais je n'y connais rien en sed.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431 > tbeghain
 
Et comme ça :
echo "${TOTO/\\/\\\\}"
?
0
tbeghain > zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour,
Non, ça ne marche pas non plus
"${TOTO/\\/\\\\}": 0403-011 The specified substitution is not valid for this command.
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
essayer
TOTO=$(sed 's/\\/\\\\/' fichier)
0
tbeghain
 
Yes, ça marche ! Merci beaucoup !
0
tbeghain
 
Oui, euh ben j'ai été un peu vite pour dire que ça marche. En fait, ça fonctionne que sur un \t. Si mon répertoire est "\temp\toto" par exemple, le résultat de l'echo est "\temp oto". Il y aurait moyen d'étendre la commande à l'ensemble des \t, voire à tous les caractères de contrôle ? (\b, \c, etc...) ? Merci
0
tbeghain
 
Bon, finalement, ça marche très bien pour tout. J'ai simplement rajouté un 'g' derrière la commande
TOTO=$(sed 's/\\/\\\\/g' fichier)
0