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 -
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
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:
- Script shell et la fonction tr
- Fonction si et - Guide
- Classic shell - Télécharger - Personnalisation
- Script vidéo youtube - Guide
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
6 réponses
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...
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question