mercredi 19 décembre 2007

Erreur bash : "value too great for base"

J'ai rencontré le problème suivant qui a résisté à toutes mes recherches de solution via les classiques moteurs de recherche... mais pas à quelques bonne minutes devant un vrai bouquin (si si ca existe encore et c'est parfois mieux que Google ou Wikipedia...).

Bref, voici le problème initial :
Dans un script unix utilisant bash comme interpreteur, j'ai eu ce message d'erreur
-bash: 08: value too great for base (error token is "08")
Ici bash nous indique qu'il ne peut pas affecter la valeur "08" à une variable. En effet le '0' en premiere position indique au shell qu'on est en octal i.e. base 8. Les seuls chiffres autorisés seront donc entre 0 et 7 (d'où le message "valeur trop grande pour cette base")

La solution :
On précise explicitement la base utilisée grâce à la syntaxe BASE#NOMBRE

Exemple :
$ declare -i NUM
$ NUM=08
-bash: 08: value too great for base (error token is"08")
$ NUM=10#08
$ echo $NUM
8
$ NUM=16#AF5E
$ echo $NUM
44894

1 commentaire:

Thierry_DellaTres a dit…

Bravo !
et merci.
Le shell est surprenant; je pensais avoir des scripts qui tournent tous seuls; et là, pour la semaine 08 (26 février 2022) plantage 07 passait 08 ne passe plus (en integer)
Cf : declare -i numf3=10#$2-1