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

Résolu
tbeghain Messages postés 63 Statut Membre -  
 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 38797 Statut Contributeur 6 433
 
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 38797 Statut Contributeur 6 433 > tbeghain
 
Et comme ça :
echo "${TOTO/\\/\\\\}"
?
0
tbeghain > zipe31 Messages postés 38797 Statut Contributeur
 
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 19021 Statut Contributeur 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