Script shell et la fonction tr

[Résolu/Fermé]
Signaler
Messages postés
22
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
28 avril 2009
-
Messages postés
22
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
28 avril 2009
-
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

6 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 882
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 882
Salut,

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

;-))
Messages postés
22
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
28 avril 2009
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
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
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 882
Ç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
;-))
Messages postés
22
Date d'inscription
jeudi 1 février 2007
Statut
Membre
Dernière intervention
28 avril 2009
2
ca marche à la perfection!!!!

Merci beaucoup pour ton aide