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 :

Sourcer un fichier


Sujet :

Linux

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Sourcer un fichier
    bonjour comment pourrai je source un fichier a partir d'un script perl sous UNIx?

  2. #2
    Membre actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Points : 299
    Points
    299
    Par défaut
    Tu souhaites sourcer un ficher shell en perl ?

    Il doit y avoir qq chose qui m'echappe car je ne vois pas a quoi cela peut servir , perl et shell n'etant pas les memes languages.

    Souhaite tu 'inclure' un fichier perl dans un autre ? La directive require devrait t'aider :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    require "monfichier.pl";
    Je crois que require est expliqué dans la FAQ Perl de developpez ...

    Si ce n'est pas ce que tu souhaites faire, alors pourrais tu expliquer un peu plus en detail ton probleme de 'sourcing' ?

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    sans doute que ouafaeinpt a un fichier qui assigne des variables d'environnement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MY_APPLI_PATH=/app/gugus
    et qu'il veut évaluer ça dans son script perl

    Mais ça ne me parait pas très simple à réaliser. sans doute qu'il faut appeler le script, et récupérer chaque valeur séparément, ou alors écrire env dans un fichier après avoir exécuter le script, puis lire chaque valeur et l'attribuer dans @ENV

  4. #4
    Membre actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Points : 299
    Points
    299
    Par défaut
    On peut stocker les vars dans une hashtable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    my $htParams = ();
    open ( FILEIN , "monfichier" ) or die("unable to read the file");
    foreach my $line ( <FILEIN> ) 
    {
       chomp($line);
       if ( $line ~= /(.*)\=(.*)/ ) 
       {
          $htParams{$1}=$2;
       }  
    }
    close( FILEIN );
    puis les utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print $htParms{MY_APPLI_PATH}."\n";
    devrait imprimer /app/gugus

    PS : un moderateur aurait supprimé mon precendent post ?

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par vosaray
    On peut stocker les vars dans une hashtable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    my $htParams = ();
    open ( FILEIN , "monfichier" ) or die("unable to read the file");
    foreach my $line ( <FILEIN> ) 
    {
       chomp($line);
       if ( $line ~= /(.*)\=(.*)/ ) 
       {
          $htParams{$1}=$2;
       }  
    }
    close( FILEIN );
    puis les utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    print $htParms{MY_APPLI_PATH}."\n";
    devrait imprimer /app/gugus

    PS : un moderateur aurait supprimé mon precendent post ?

    oui, bien sûr. mais cela ne marche pas si on a quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    BASE=/app
    APPL=$BASE/gugus

  6. #6
    Membre actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Points : 299
    Points
    299
    Par défaut
    C'est sur, mais en modifiant la regexp on s'en sort tout de meme

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    ah oui?

    et tu fais quoi avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    APPL_HOST=$(hostname|cut -d. -f1)
    tu écris ton propre interprétateur shell en perl? note, pourquoi pas

  8. #8
    Membre actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Points : 299
    Points
    299
    Par défaut
    Hihi , non j'ecris pas mon propre intepreteur shell, mais :

    1/ je genere un fichier .sh qui source le fichier en question et dump les variables dans fichier2.vars
    2/ j'execute ce .sh depuis perl avec la commande system
    3/ je modifie le nom du fichier a sourcer dans le code posté et je retombe sur mes pattes

    Bon ca devient un peu kafkaien comme delire, surtout que la personne qui a posé la question n'a pas l'air de se manifester beaucoup

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    c'est bon comme méthode ça

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    desolee, mais j avai des examens c est pour cela que j ai laisser tomber en attendant de finir mes exam
    mai mon problem persiste tjrs
    c est vrai le fichier que je doit source doit declarer une variable d'environnement c est pour cela que je veu le sourcer
    en plus meme si j ecris un fichier shell pour source un fichier qui s'apelle source.me cela ne marche pas
    cette variable je la declare vide car apres dans le scripte une valeur lui sera attribuer par une variable
    j sai pas si vous avez bien compris mon problem!!

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    J'ai une autre solution, qui impose cependant quelques contraintes ...

    Soit ba.sh mon fichier shell à sourcer pour mon script Perl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/sh
     
    export BA="ba"
    Celui-ci (ba.sh) doit IMPERATIVEMENT contenir une variable d'environnement que lui et lui seul fixe. Dans mon exemple, c'est la variable BA.

    Ensuite, mon script Perl teste si cette variable est définie.
    Si elle l'est, il n'y a rien à sourcer - puisque c'est manifestement déjà fait - et on exécute normalement nos commandes Perl.
    Si elle ne l'est pas, on lance un processus fils, qui se substitue au processus père, au moyen de la fonction exec. Ce processus-fils source notre shell et relance le script Perl lui-même, ce qui nous ramène au premier cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/perl
     
    if (exists $ENV{BA}) {
      print "[".$ENV{BA}."]\n"
    } else {
      print "Pas de BA\nOn source et on relance ...\n";
      exec "source ./ba.sh ; $0";
    }
    La première fois que j'ai imaginé ce mécanisme, je me suis dit que c'était certainement bourrin ... depuis j'ai muri et je le trouve finalement assez élégant.

    Et vous ???

Discussions similaires

  1. Sourcer un fichier depuis Java en bash
    Par lanfeustdetroll dans le forum Général Java
    Réponses: 2
    Dernier message: 16/12/2008, 16h25
  2. Sourcer un fichier depuis Java
    Par lanfeustdetroll dans le forum Langage
    Réponses: 1
    Dernier message: 09/12/2008, 20h51
  3. fichier mappé en mémoire
    Par WinBernardo dans le forum Delphi
    Réponses: 7
    Dernier message: 01/12/2006, 09h38
  4. Lire 1 bit d'un fichier en C
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 23/05/2002, 18h31
  5. Fichier PDOXUSRS.NET
    Par yannick dans le forum Paradox
    Réponses: 5
    Dernier message: 05/04/2002, 09h45

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