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 :

Int considéré comme String


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 24
    Par défaut Int considéré comme String
    Bonjour,

    Dans un script j'appelle la commande cUrl etait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -u login:password http://10.10.10.69/params/get.cgi?Services.CpuLoad-1.CpuLoad
    réponse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Services.CpuLoad-1.CpuLoad=30
    Sachant que la commande cUrl n'appelle pas de fichier XML, JSON, PHP... il était embêtant de la parser, du coup j'ai simplement mis le résultat dans une variable et supprimé ce qui ne m’intéressait pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test=$(curl -u login:password  http://10.10.10.69/params/get.cgi?Services.CpuLoad-1.CpuLoad)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "${test//Services.CpuLoad-1.CpuLoad=}"
    réponse :

    30

    Problème :

    Malgré que ma réponse soit 30 en réalité c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    0000000   3   0  \r
    0000003
    Le \r me pose un problème je pense pour être considéré comme un entier. Du coup, impossible de faire des comparaisons.

    Merci d'avance,

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 652
    Par défaut
    Bonjour,

    existe-t-il un "paramètre" HTML, qui pourrait être envoyé dans l'en-tête de ta requête, pour demander au site de formater correctement ses fins de lignes ?

    sinon,
    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    test="${test##*=}"
    test="${test%$'\r'}"
    echo "$test" | od -c
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 24
    Par défaut
    Merci pour ta réponse. J'avais essayé ça mais il ne prenait quand même pas ma variable comme un INT.

    Finalement il fallait réfléchir plus simplement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    URL=$(curl -u login:password http://10.10.10.69/params/get.cgi?Services.CpuLoad-1.CpuLoad)
     
    Services.CpuLoad-1.CpuLoad=30
    #Récupération de la valeur après le '='
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ETAT_STR=$(echo $URL | awk -F'=' '{ print $2 }')
    echo $ETAT_STR
     
    30 (en réalité 0000000   3   0  \r 0000003)
    #Permet d'avoir la valeur réelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TEST=$(echo -n $ETAT_STR | od -c)
    echo $TEST
     
    0000000   3   0  \r 0000003
    #Je récupère uniquement les valeurs numérique de ma variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ETAT=$(echo "${ETAT_STR//[!0-9]/}")
    echo $ETAT
     
    30 (valeur  réelle 0000000   3   0 )
    Merci

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Tu peux aussi supprimer explicitement le \r à la mano (enfin, avec "tr"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test=$(curl -u login:password  http://10.10.10.69/params/get.cgi?Services.CpuLoad-1.CpuLoad | tr -d '\r')
    Mais c'est plus coûteux (lancement d'un processus supplémentaire) que les versions en pur bash proposées précédemment.

    Àmha, la solution proposée par N_BaH est la meilleure! (comme d'hab...)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 24
    Par défaut
    Effectivement la version mano fonctionne aussi

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/08/2010, 16h01
  2. type String considéré comme objet
    Par new_wave dans le forum Langage
    Réponses: 1
    Dernier message: 04/11/2008, 17h25
  3. CloseHandle considéré comme une erreur par Memproof !
    Par benj63 dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/02/2006, 11h27
  4. [Lisp] Variable considérée comme une fonction
    Par lunart dans le forum Lisp
    Réponses: 2
    Dernier message: 07/04/2005, 15h48
  5. modification de format? Un Int devient un String.
    Par thanathz dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/01/2005, 14h17

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