Rechercher : dans
Par :

Script shell et la fonction tr

Dernière réponse le 27 mar 2008 à 23:01:46 rordinas, le 27 mar 2008 à 20:35:33 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « script shell et la fonction tr » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...

1

jipicy, le 27 mar 2008 à 20:40:34

Salut,

Y'a pas un os là "$var4" :

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

;-)) JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

2

rordinas, le 27 mar 2008 à 21:49:55

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

Répondre à rordinas

3

jipicy, le 27 mar 2008 à 22:10:31

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...
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

4

rordinas, le 27 mar 2008 à 22:36:36

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\3­03\257\303\264\303\266\303\271\303\274' aceeeeiioouu
+ var2=buebue

echo $var2
+ echo buebue
buebue


merci de porter attention à mon problème

Répondre à rordinas

5

jipicy, le 27 mar 2008 à 22:50:02

Ç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
;-))
JP - Éleveur de pingouins -
Faites un geste pour l'environnement, fermez vos fenêtres et adoptez un manchot.

Répondre à jipicy

6

 rordinas, le 27 mar 2008 à 23:01:46

Ca marche à la perfection!!!!

Merci beaucoup pour ton aide

Répondre à rordinas