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 :

Korn shell et evaluation


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Par défaut Korn shell et evaluation
    Bonjour,

    J'aimerai savoir si il est possible d'obtenir à partir d'une ligne de commande composée de variables d'environnements la ligne de commande correspondante après l'évaluation de ces variables.


    Merci d'avance.

  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
    je ne suis pas sur de comprendre la question .
    la ligne de commande + les argumets peut s'obtenir via les variables automatique du shell :
    $0 -> nom du shell lancé
    $* -> toutes les variables passé en argument
    donc
    te donne ce qui a été tape sur la ligne de commande
    si tu appelle un shell comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    mon_shell $USER
    # dans le shell
    echo $0 "$*"
    # te donne 
    mon_shell non_du_user

  3. #3
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Par défaut
    non pas vraiment!

    Je précise mon problème : J'ai un shell qui récupére des lignes de commandes à partir d'un fichier. Certaines de ces lignes de commande sont composées de variables d'environnement (e.g. $LD_LIBRARY_PATH). A partir de ces lignes, je souhaiterai obtenir leurs equivalents sans variables d'environnement ou autrement dit les lignes de commandes obtenu après substitution des variables d'environnements.

    ex : $TOTO/ls et si TOTO=/usr/local/bin => /usr/local/bin/ls

  4. #4
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Par défaut
    Je ne vois pas trop pourquoi tu veux faire mais certes.

    Peut etre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    AA=`echo $TOTO`
    ou
    AA=$TOTO
    AA possedera la même valeur que TOTO

  5. #5
    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
    Simplement je ne vois pas sauf si les variables sont "initialisés" dans ton environnement auquel cas un simple echo $variables suffit
    fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    commande $LS_LIBRARY
    autre commande $USER
    shell
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while read ligne
    do
    echo "$ligne"
    done < fichier
    si ce sont des varibales initialisé dans le fichier, il va falloir "parsé" chaque ligne pour determiner si c'est une commande ou une initialisation de variable, si c'est une initialisation, lm'initialisé dans le shell afin de pouvoir l"utiliser

  6. #6
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Par défaut
    Pour pouvoir comparer des lignes de commande tout simplement et la finalité est de pouvoir identifier un programme à partir de sa ligne de commande sans passer par un identifiant déclaré.

    Malheureusement, ta solution ne fonctionne pas. Dans ton cas, la variable $TOTO est évalué par le shell avant l'appel de la commande echo. Dans mon cas, il me faut forcer cette evaluation.

  7. #7
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Par défaut
    Bon ben je crois que je vais devoir passer par un parseur.

    Merci Katyucha et MarcG

  8. #8
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 15
    Par défaut
    J'ai trouvé une astuce pour evaluer les variables d'environnement de mes lignes de commandes en utilisant la commande eval. Cette commande evalue les paramètres d'une ligne de commande puis l'execute. La commande suivante me permet donc d'obtenir ce que je voulais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cmd_norm=`eval "echo $cmd"`

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

Discussions similaires

  1. [Unix][9i] insert avec des variable ($) sous Korn Shell
    Par weejungle dans le forum Oracle
    Réponses: 1
    Dernier message: 20/09/2006, 12h41
  2. Réponses: 3
    Dernier message: 20/09/2006, 10h41
  3. Problème "Rechercher des patrons" avec Korn Shell
    Par dongnold dans le forum Linux
    Réponses: 2
    Dernier message: 29/07/2006, 15h22
  4. Automatiser un korn shell
    Par tonymontana4192 dans le forum Linux
    Réponses: 1
    Dernier message: 25/11/2005, 17h43
  5. Lire un fichier en korn shell
    Par declencher dans le forum Linux
    Réponses: 5
    Dernier message: 23/03/2005, 15h30

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