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 :

information commande eval


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2009
    Messages : 23
    Points : 21
    Points
    21
    Par défaut information commande eval
    Bonjour,
    J'ai fait une recherche sur le forum en ce qui concerne la commande eval en bash.
    je n'ai pas trouver d'information precise sur la subtilité de cette commande .
    C'est pourquoi je me permet d'ouvrir un sujet de debutant.
    J'ai bien compris qu'elle permet de faire une double evaluation mais je n'arrive pas a lui trouvé un contexte.
    prenons des exemples.
    1)
    var=resu
    resu=resultat
    si je fais un eval echo \$$var j'ai bien le "resultat"
    seulement puisque j'ai une variable qui reference resultat et que je peux la recuperer par echo a quoi me sert eval des lors ?

    2) si maintenant je veux affecter une variable par eval
    set -- un deux trois
    eval un=\$$1

    reviens exactement au meme que
    un="$1"
    ou
    un=$(echo "$1")

    ceux des exemples me font croire que eval a peut d'interet
    Ou alors et c'est tres probable j'ai rien compris dans ce cas merci de m'eclairer.
    Bonne soirée

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 584
    Points : 19 462
    Points
    19 462
    Par défaut
    D'abord, merci !

    Merci pitbac23, par ta question, d'avoir résolu le problème que je me posais...

    comment alimenter un tableau à partir d'une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var="\"bla bla bla\" \"cra\" \"ella\"
    \"foo foo foo\" \"bar\" \fubar\""
    while read line; do eval array=( "$line" ); echo "${array[0]}; done <<< "$var"
    bla bla bla
    foo foo foo
    Essaye sans eval, c'est beaucoup moins réussi...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 417
    Points : 376
    Points
    376
    Par défaut
    eval [arg ...]
    The args are read and concatenated together into a single command. This command is then read and executed by the shell, and its
    exit status is returned as the value of eval. If there are no args, or only null arguments, eval returns 0.
    eval
    Cette commande ordonne l'interprétation par le shell de la chaine passée en argument. On peut ainsi construire une chaine que l'appel à eval permettra d'exécuter comme une commande !
    Exemple
    message="Quelle est la date d'aujourd'hui ?
    set $message
    echo $# ---> le nombre de mots est 6
    echo $4 ---> affiche la chaine "date"
    eval $4 ---> interpréte la chaine "date" comme une commande, donc ...

    Il est souvent pratique de construire une chaine dont la valeur sera égale au libellé d'un enchainement de commandes (par . Pour faire exécuter ces commandes contenues dans la chaine, on la passe comme argument de la commande eval
    exemple 1
    liste="date;who;pwd" ( ' ' ou " " obligatoires sinon le ; est un séparateur de commandes)
    eval $liste
    ---> exécute bien les 3 commandes

    exemple 2
    Soit la chaine $user qui contient des information sur un compte à créer. S'il utilise un autre séparateur que ";" on fait appel à tr d'abord
    user="login=toto ; mdp=moi ; nom='Monsieur Toto' ; groupe=profs"
    eval $user
    echo $login $mdp $nom $groupe
    useradd -G $groupe $login
    echo $mdp | (passwd --stdin $login)

Discussions similaires

  1. problème avec la commande "eval"
    Par Meskine3 dans le forum MATLAB
    Réponses: 4
    Dernier message: 08/07/2011, 19h39
  2. Information commande cat
    Par cricri77200 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 22/04/2009, 15h47
  3. Informations sur la commande replaceregexp
    Par Battosaiii dans le forum ANT
    Réponses: 1
    Dernier message: 15/11/2006, 15h29
  4. Commande pour information disque
    Par reg11 dans le forum Administration système
    Réponses: 11
    Dernier message: 03/01/2006, 19h05
  5. Réponses: 6
    Dernier message: 23/11/2005, 14h24

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