Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/01/2008, à 21:39

wlourf

[résolu] [bash] conversion chaine en décimal

Bonsoir d'un débutant tenace,

J'ai ce simple script :

#!/bin/bash

essai="04:06"
		
e1=$((${essai%:*}))
e2=$((${essai#*:}))

echo $e1'__'$e2

o๠"essai" est toujours de la forme HH:MM, avec des chiffres inférieurs à  8 je n'ai pas de problème (11:12, 03:07, 05:25) par contre si un des chiffres (en fait c'est du texte bien sûr) est 08 ou 09 j'ai un beau message :
ex essai="07:09"
line 6: 09: valeur trop grande pour la base (error token is "09")
Que puis-je faire pour remédier à  ça ?

Merci d'avance!

Dernière modification par wlourf (Le 05/01/2008, à 00:18)

Hors ligne

#2 Le 04/01/2008, à 22:24

Alain.g

Re : [résolu] [bash] conversion chaine en décimal

salut

Précédé d'un zéro, le nombre est interprété comme un octal, donc pas de 8 ni de 9  (0->7 uniquement).

$((10+1)) sera égal à  11
$((010+1)) sera égal à  9

Ce n'est pas cela qu'on appelle des expressions régulières.


Xubuntu Karmic !

Hors ligne

#3 Le 04/01/2008, à 22:30

best_friend_fr

Re : [résolu] [bash] conversion chaine en décimal

Attention, 09 n'existe pas, c'est normal

09 est de l'octal, donc pas de 8 ni de 9.

grille...

Dernière modification par best_friend_fr (Le 04/01/2008, à 22:30)


sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr

Hors ligne

#4 Le 04/01/2008, à 22:51

wlourf

Re : [résolu] [bash] conversion chaine en décimal

ah ok, merci pour vos réponses ... je pensais bien qu'il y avait un lien avec l'octal mais alors comment faire pour que 09 et 08 extraits de 09:08 soient convertis en décimaux, je suppose que l'erreur vient de là  ${essai%:*} car c'est un copié collé dont j'avoue de pas comprendre la syntaxe ; un coup %, un coup #...
Merci

Hors ligne

#5 Le 04/01/2008, à 23:35

best_friend_fr

Re : [résolu] [bash] conversion chaine en décimal

tu veux faire quoi exactement ?

Si par exemple tu veux afficher

4__9 pour l'entree 04:09, tu peux faire

#!/bin/bash

essai="04:09"

e1=${essai%:*}
e2=${essai/*:}

e1=$((10#`echo $e1`))
e2=$((10#`echo $e2`))
echo $e1'__'$e2

Dernière modification par best_friend_fr (Le 04/01/2008, à 23:36)


sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr

Hors ligne

#6 Le 04/01/2008, à 23:48

wlourf

Re : [résolu] [bash] conversion chaine en décimal

je voulais faire des calculs sur ces chiffres par la suite, ça marche donc avec ce que tu m'as indiqué 10#

#!/bin/bash

essai="08:08"
		
e1=$((10#${essai%:*}))
e2=$((10#${essai/*:}))
#e1=$((10#$e1))
#e2=$((10#$e2))
r1=$(($e1*60))
r2=$(($e2*60))

echo $r1'__'$r2

me retourne 480__480, trop bien! merci cool

Hors ligne

#7 Le 05/01/2008, à 00:06

best_friend_fr

Re : [résolu] [bash] conversion chaine en décimal

Tu peux donc mettre resolu dans le titre.


sudo apt-get replace langage_sms by grammaire orthographe ponctuation
La documentation est avant tout faite pour ceux qui posent les questions, et non ceux qui y répondent
Best_friend_fr

Hors ligne

#8 Le 05/01/2008, à 00:37

Alain.g

Re : [résolu] [bash] conversion chaine en décimal

j'avoue de pas comprendre la syntaxe ; un coup %, un coup #

C'est expliqué ici : http://abs.traduc.org/abs-5.1-fr/ch09s02.html#substringremoval


juste pour préciser, par rapport aux expressions régulières (rationnelles), puisque c'était à l'origine le titre du sujet, ça donnerait quelque chose comme cela :

#!/bin/bash
essai="08:08"

e1=`expr $essai : '0\?\([0-9]\+\)'`
e2=`expr $essai : '.*:0\?\([0-9]\+\)'`

Dernière modification par Alain.g (Le 05/01/2008, à 00:57)


Xubuntu Karmic !

Hors ligne

#9 Le 05/01/2008, à 00:43

wlourf

Re : [résolu] [bash] conversion chaine en décimal

merci pour ces précisions

Hors ligne