utilisation de la fonction sleep dans un batch et séparateur décimale

patrick patrick.noel at argus-presse.fr
Mer 9 Sep 07:02:58 UTC 2009


Merci pour cette suggestion c'est effectivement la solution si on ne
peut pas faire autrement mais cela implique de modifier les scripts et
j'en ai beaucoup.

Si j'ai bien compris LC_NUMERIC permet de définir le format numérique et
le séparateur de décimal. Est il normal que la fonction sleep ne prenne
pas en compte cette locale ?

Merci

Patrick 



Le mardi 08 septembre 2009 à 22:56 +0200, MulX (Aymeric) a écrit :

> patrick a écrit :
> > Bonjour,
> >
> > Je cherche un moyen de changer le séparateur décimal dans
> > l'utilisation de la fonction sleep.
> > Par défaut si on veut faire un sleep de 0,1 seconde il faut taper
> > "sleep 0.1", je fais une migration de script batch depuis un debian
> > Woody vers un Ubuntu 9.4 et sous Debian Woody j'utilisais une virgule
> > comme séparateur décimal après avoir fixé la variable LC_NUMERIC=fr_FR.
> > Avec Ubuntu 9.4 je n'ai pas réussi à remplacer le point par la virgule
> > pour l'utilisation de la fonction sleep.
> >
> > La commande locale donne :
> > LANG=fr_FR.UTF-8
> > LC_CTYPE="fr_FR.UTF-8"
> > LC_NUMERIC="fr_FR.UTF-8"
> > LC_TIME="fr_FR.UTF-8"
> > LC_COLLATE="fr_FR.UTF-8"
> > LC_MONETARY="fr_FR.UTF-8"
> > LC_MESSAGES="fr_FR.UTF-8"
> > LC_PAPER="fr_FR.UTF-8"
> > LC_NAME="fr_FR.UTF-8"
> > LC_ADDRESS="fr_FR.UTF-8"
> > LC_TELEPHONE="fr_FR.UTF-8"
> > LC_MEASUREMENT="fr_FR.UTF-8"
> > LC_IDENTIFICATION="fr_FR.UTF-8"
> > LC_ALL=
> >
> > J'ai cherché un peu partout sans trouver de solution, avez vous une
> > piste ?
> >
> > Merci
> >
> > Patrick 
> (j'ai quelques problèmes de messagerie :/ )
> 
> A priori mon premier message est parti avant que j'ai eu le temps de le
> finir
> Voici donc l'expression régulière :
> 
> sed -e '/^sleep *\,*/ s \([0-9]\)\?,\([0-9]\) \1.\2 '
> 
> 
> Voici un exemple :
> echo "foo.bar"
> sleep 1,2
> sleep 11,25
> sleep 2,4s
> sleep .2
> sleep ,6
> echo sleep 1,2
> echo "bar,foo"
> 
> Après execution de la commande sed :
> 
> echo "foo.bar"
> sleep 1.2
> sleep 11.25
> sleep 2.4s
> sleep .2
> sleep .6
> echo sleep 1,2
> echo "bar,foo"
> 
> 
> Remarque j'ai utilisé l'espace comme séparateur de la commande sed pour
> y voir plus clair.
> Expliqué simplement on selectionne pour les lignes qui commence par
> sleep, tout les chiffres avant la ',' et tout ce qui est après.
> Chaque morceaux est mémorisé puis on remet le premier.second
> 
> En écrivant je me dit qu'il y a peut être plus simple, remplacer la ,
> par un . pour les lignes qui commence par sleep .... (sed -e '/^sleep
> *,*/ s , . g')
> 
> Enfin bref ça m'a fait réviser les expressions régulières ^^
> 
> Si tu souhaite l'utiliser un ensemble de fichier (qui on va supposer
> finissent par .sh)
> 
> for fichier  in *.sh
> do
> sed -e '/^sleep *\,*/ s \([0-9]\)\?,\([0-9]\) \1.\2 ' -i "$fichier"
> done
> 
> Voilà.
> 
> -- 
> MulX, alias os2mule. (IRL: Aymeric)
> WWW : http://www.aplu.fr ; Jabber : mulx at jabber.fr
> Merci d'eviter le "Top posting" !
> 
> Preuve est faite que visage dévot et pieuses actions nous servent à enrober de sucre le diable lui même.
> 
> 
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.ubuntu.com/archives/ubuntu-fr/attachments/20090909/e0c39a65/attachment.html>


Plus d'informations sur la liste de diffusion ubuntu-fr