IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Erreur de conversion chaine-entier


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé
    Avatar de N_I_C_S
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 450
    Points : 681
    Points
    681
    Par défaut Erreur de conversion chaine-entier
    Salut,

    Débutant en unix, je suis confronté à ce petit problème qui me fait m'arracher les cheveux!
    J'ai des chaines de la forme (par ex.) "00086.1" qui correspondent à un numéro d'orbite terrestre (00086) et un type de demi-orbite (1) et, dans un script, je veux faire une fonction qui les renverrais sous forme d'un entier (c.a.d. 861).

    La fonction : (la variable $2 est la chaine en question)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    GetHo() {
     
    	orbite=`echo $2 | awk -F'.' '{print $1}' `
    	type=`echo $2 | awk -F'.' '{print $2}' `
     
    	printf "%05d%01d" $orbite $type
    }
    et ça m'affiche "printf : 00086 not completely converted"
    Quelqu'un voit-il le problème? Pitié, je veux pas finir chauve !

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 88
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    En fait, je crois que le printf ne considere pas les valeurs 000... comme un entier.

    Donc si tu veux que cela afficher 00086 1 , il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    printf "%05s%01d" $orbite $type
     
    # Une methode plus rapide avec la commande tr fait une substitution de caractere. Il cherche un '.' qu'il remplace par rien.
     
    echo 00086.1 | tr -d '.' ''

  3. #3
    Membre éclairé Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Points : 652
    Points
    652
    Par défaut
    [QUOTE=N_I_C_S]Salut,
    J'ai des chaines de la forme (par ex.) "00086.1" qui correspondent à un numéro d'orbite terrestre (00086) et un type de demi-orbite (1) et, dans un script, je veux faire une fonction qui les renverrais sous forme d'un entier (c.a.d. 861).


    Une façon de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $ var=000861.1
    $ echo $var
    000861.1
    $ echo $var | awk '{ print $0*10 }'
    8611

  4. #4
    Membre éclairé
    Avatar de N_I_C_S
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 450
    Points : 681
    Points
    681
    Par défaut
    Ca gaze au poil !
    Merci beaucoup pour vos lumières.
    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion Chaine -> Entier
    Par Weirdy dans le forum Langage
    Réponses: 4
    Dernier message: 21/06/2011, 16h49
  2. conversion chaine en entier
    Par franfr57 dans le forum Général Java
    Réponses: 5
    Dernier message: 06/12/2008, 12h44
  3. Conversion chaine de caractère => entier (ordre des caractères primordial car ADN)
    Par ctobini dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/09/2007, 11h20
  4. Conversion d'entier en chaine
    Par chmaichel dans le forum C
    Réponses: 3
    Dernier message: 09/01/2007, 00h55
  5. Conversion chaines/entiers
    Par magoer dans le forum SQL
    Réponses: 2
    Dernier message: 18/04/2006, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo