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 :

Tester le contenu d'une variable


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut Tester le contenu d'une variable
    Bonjour,
    Je cherche à tester le contenu d'une variable selon différents formats.

    1) Premier cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var=400.562523285041004195
    if [[ $var = [0-9\.]{0,22} ]] ; then
        echo "OK"
    else
        echo "KO"
    fi
    Cela me retourne KO au lieu de OK ? et je ne comprends pas pourquoi !

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    =~ sinon, tu ne testes pas une regex !

    edit: ta regex n'est pas assez précise.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut
    Merci N_bah.

    Voila ce que j'ai fait et ca à l'air de marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    rgx='^[0-9\.]{0,22}$'
    if [[ $maVAR =~ $rgx ]] ; then
        echo "OK"
    else
        echo "KO"
    fi
    En temps normal, ce que je récupère dans ma variable maVAR ressemble à cela :
    400.625232850410041957
    Le pas beau qui peut être récupérer si problème :
    at /Users/akinsella/Workspace/Projects/gtfs-playground/build/app-test.js:16:11
    at callbacks (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/lib/router/index.js:164:37)
    at param (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/lib/router/index.js:138:11)
    at pass (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/lib/router/index.js:145:5)
    at Router._dispatch (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/lib/router/index.js:173:5)
    at Object.router (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/lib/router/index.js:33:10)
    at next (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/node_modules/connect/lib/proto.js:193:15)
    at Object.expressInit [as handle] (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/lib/middleware.js:30:5)
    at next (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/node_modules/connect/lib/proto.js:193:15)
    at Object.query [as handle] (/Users/akinsella/Workspace/Projects/gtfs-playground/node_modules/express/node_modules/connect/lib/middleware/query.js:45:5)
    MAIS...
    Donc ce que je récupère dans ma variable maVAR provient d'un retour qui peut être du n'importe quoi sur plusieurs ligne du style vraiment pas beau.
    Mon petit script ci-dessus semble traiter sur une ligne. Mais si le retour dans ma variable est sur plusieurs lignes, mon script ne traitera pas les autres lignes ?

    Dans ce cas, ne vaudrait-il mieux pas que je récupère plutôt dans un fichier.txt, que je teste le contenu avec un sed, puis que je mette dans ma variable ma VAR ?
    Comme ca, je suis vraiment sûr que dans ma variable maVAR, c'est vraiment propre.
    D'avance merci pour votre aide ;-)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    s'il y a du "pas beau" , c'est peut-être que le requête initiale n'est pas assez précise...

    il y a une discussion ouverte sur notre forum à ce sujet ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre confirmé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juillet 2020
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juillet 2020
    Messages : 175
    Par défaut
    En fait la requête node js fonctionnait bien mais je suis passé sur un VPS moins performant et cela a donné des problèmes de marshmaling.
    Du coup, je teste sur la récup.

    Est-ce que mon petit script me garanti de tester tout le contenu de la variable ?
    En d'autre terme, est-ce que le test regex garanti qu'il n'y a QUE le nombre 400.625232850410041957 et rien d'autre dans la variable ?

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    la regex dit :
    - commence par un nombre ou un point
    - est d'une longueur totale comprise entre 0 et 22 nombre(s) ou point(s)
    il pourrait donc y avoir plusieurs points. :/

    avec celle-là, ^[0-9]*\.*[0-9]+$, la variable doit se finir par des nombres uniquement, et commencer par des nombres (ou pas), ou un point (ou pas).
    par contre, on ne contrôle pas la longueur de la variable. C'est important ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

Discussions similaires

  1. Tester si le contenu d'une variable est en majuscule
    Par diombo dans le forum VBA Access
    Réponses: 8
    Dernier message: 16/01/2019, 15h45
  2. [Batch] Tester contenu d'une variable
    Par madmaxou dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 28/10/2009, 07h53
  3. tester le contenu d'une variable
    Par zougagh dans le forum C
    Réponses: 4
    Dernier message: 05/02/2009, 11h46
  4. [XSLT] Tester le contenu d'une variable
    Par DotNET74 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/12/2006, 12h42
  5. tester la définiton d'une variable
    Par mathieu dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 06/09/2003, 11h54

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