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

Linux Discussion :

Trouver le type d'une variable


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut Trouver le type d'une variable
    salut,

    J'aurai aimé savoir en unix comment trouver le type d'une variable :
    j'ai un script dans lequel je saisi une variable avec un read et si cette variable est une lettre ,j'affiche que c'est une lettre et si c'est un chiffre j'affche que c'est un chiffre;

    existerai t il une commande unix qui permette de determiné le type d'une variable ?

    Merci.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    non le type des variables en shell est toujours "chaine"

    par contre a l'aide d'expression reguliere il devient possible de determiner s'il sagit de lettre ou chiffre.

    ^[a-zA-Z][a-zA-Z]*$ ligne ne contenant que des lettres
    ^[0-9][0-9]*$ ligne ne contenant que des chiffres

    donc un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    read ma_variable
    if $(echo $ma_variable | grep '^[0-9][0-9]*$')
    then
      echo $ma_variable et un chiffre
    fi

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    j'ai fait cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo " entrer une chaine"
    read chaine
    if $(echo $chaine | grep '^[0-9][0-9]*$')
    then
      echo "$chaine est un chiffre"
    fi
    mais quand je fait cela et que je lance mon script j'ai ce message,apres avoir saisi la chiffre


    command not found

    ???

  4. #4
    Membre Expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Par défaut
    Plutôt ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo " entrer une chaine"
    read chaine
    if echo $chaine | grep -q '^[0-9][0-9]*$'
    then
      echo "$chaine est un chiffre"
    fi
    Pas besoin d'utiliser $( ) pour récupérer l'affichage de la commande.
    Ajouter un -q pour rendre le grep silencieux.

    Sinon, MarcG, pourquoi doubler le motif de recherche ? '^[0-9]*$', par exemple, devrait être suffisant ... ou une subtilité m'échappe

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2005
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 319
    Par défaut
    merci de ton aide
    donc si j'ai bien compris ce qui n'allai pas c 'est le dollard avant la parenthese
    donc j'ai essayer sa fonctionne;
    à quoi sert l'option -q du grep ?
    j'ai essayer de tester donc s'il s agit d'une lettre et sa ne fonctionne pas pourtant j'ai suivi le meme raisonnement;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    echo " entrer une chaine"
    read chaine
    if echo $chaine | grep -q '^[0-9][0-9]*$'
    then
      echo "$chaine est un chiffre"
    elseif echo $chaine | grep -q '^[a-zA-Z][a-zA-Z]*$'
    then
    echo "$chaine est une chaine"
    fi
    j'ai cette erreur
    syntax error near unexpected token 'then'
    'then'

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Par défaut
    doubler le motif signifie au moins 1 fois le motif, si tu ne le double pas cela signifie 0 ou n fois le motif

    pour l'erreur c'est le elseif que le shell n'aime pas .

Discussions similaires

  1. Tester le type d'une variable et trouver un ppcm
    Par sic_88 dans le forum Débuter
    Réponses: 2
    Dernier message: 03/11/2009, 21h36
  2. Réponses: 15
    Dernier message: 30/11/2007, 15h36
  3. Connaitre le type d'une variable
    Par mic79 dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2006, 15h42
  4. Trouver le Type d'une classe template dynamiquement ?
    Par Serge Iovleff dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2005, 16h48
  5. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31

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