Script shell et la fonction tr

Résolu
rordinas Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
rordinas Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis confronté à un petit soucis concernant l'utilisation de la fonction tr dans un script shell.
En fait je souhaiterais que la chaine contenu dans $var1(bébé) soit converti dans $var2 en une chaine exempt de tout accent (soit bebe)
Voici mon script :

#!/bin/sh

var1=bébé

echo $var1

var2=`echo $var4 | tr 'àçéèêëîïôöùü' 'aceeeeiioouu'`

echo $var2

le truc c'est que j'ai l'impression que le script ignore ce qui se trouve apres le pipe, soit la fonction tr et je me retrouve donc avec une chaine dans $var2 identique à celle de $var1!!!
Ce que je trouve bizare c'est que ma syntaxe à l'air correct étant donné que si dans la console je lance :
echo bébé | tr 'àçéèêëîïôöùü' 'aceeeeiioouu' et bien tout se passe impécablement bien et je me retrouve avec la chaine bebe....

surement un truc bète mais j'y comprend rien!!

Merci d'avance

PS : je suis sous debian etch
A voir également:

6 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Exécute ton script en ajoutant "set -xv" après la ligne "shebang", histoire qu'on voit un peu comment sont interprétées les variables, et affiche le résultat...
1
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Y'a pas un os là "$var4" :
var2=`echo $var4 | tr 'àçéèêëîïôöùü' 'aceeeeiioouu'` 
???

;-))
0
rordinas Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   2
 
euh si si y a un os je me suis trompé dans la réécriture du script^^

le bon script c est :


#!/bin/sh

var1=bébé

echo $var1

var2=`echo $var1 | tr 'àçéèêëîïôöùü' 'aceeeeiioouu'`

echo $var2
0
rordinas
 
Bon alors,

je vais reprendre mon post depuisle début car il semblerais que mon problème ne soit plus d'actualité (j'ai exécuté le script sur un autre PC).
Maintenant au lieu de m'afficher bebe il m'affiche buebue et je vois pas trop pourquoi :(

bon comme tu me l as demandé, si j'ai bien compris ce qu'étais le sheebang (ligne #!/usr/bin/sh?) je te poste le résultat du script avec la ligne set -xv :

server:~# ./testtr.sh

var1=bébé
+ var1=$'b\303\251b\303\251'

echo $var1
+ echo $'b\303\251b\303\251'
bébé

var2=`echo $var1 | tr 'àçéèêëîïôöùü' 'aceeeeiioouu'`
echo $var1 | tr 'àçéèêëîïôöùü' 'aceeeeiioouu'
++ echo $'b\303\251b\303\251'
++ tr $'\303\240\303\247\303\251\303\250\303\252\303\253\303\256\303\257\303\264\303\266\303\271\303\274' aceeeeiioouu
+ var2=buebue

echo $var2
+ echo buebue
buebue


merci de porter attention à mon problème
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Ça fait pareil chez moi (beubeu) ;-((

Essaie avec "sed" :
#!/bin/sh

set -xv

var1=bébé

echo $var1

var2=`echo $var1 | sed 'y/àçéèêëîïôöùü/aceeeeiioouu/'`

echo $var2
;-))
0
rordinas Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   2
 
ca marche à la perfection!!!!

Merci beaucoup pour ton aide
0