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 :

remplacement/interprétation de variables


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut remplacement/interprétation de variables
    salut,

    voici mon script:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #!bin/sh
    MY_PATH="/var/lib/ldap"
    MY_FILE="/var/lib/ldap/test.fic"
    echo -ne "$(grep -v "*" $MY_FILE)"
    voici test.fic:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    du texte
    voici une variable: $MY_PATH
    encore du texte

    lorsque j'execute mon script, voici ce que j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    du texte
    une variable: $MY_PATH
    encore du texte
    mon problème se situe au niveau du remplacement de la variable $MY_PATH.
    je souhaiterais qu'à l'exécution de mon script celle-ci soit remplacée par ça
    valeur "/var/lib/ldap".

    savez-vous si cela est possible, et si oui comment il faudrait que je m'y prenne.

    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
    si je comprend bien le problème :
    pourquoi rechercher "*" avec le grep ????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo -ne $(grep -v $MY_PATH $MY_FILE)
    ne serait pas plus exacte ?
    tu desire bien toute les ligne SAUF celle avec le contenue de MY_PATH ?

  3. #3
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut
    non, je souhaite afficher le contenu du fichier et remplacer toutes les variables de mon fichier par leur valeur que j'ai définie dans mon script.
    --> peut-être que mon utilisation de grep n'est pas judicieuse.


  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Il est tout à fait normal que cela ne fonctionne pas

    Sans détails supplémentaire, je dirais qu'il suffit de mettre le tout dans un seul shell avec par exemple une boucle de lecture ligne par ligne

  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
    s'il s'agit juste d'afficher utilise sed , genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed s/\$MY_PATH/$MY_PATH/g test.fic
    cela devrait fonctionner tres bien sans etre compliquer

  6. #6
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut
    ta solution a l'air intéressante, cependant la commande ne fonctionne pas.
    j'ai un message d'erreur du genre:

    sed: -e expression n°1, caractère 18: option inconnue pour `s'

    où est l'erreur?

    merci

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Autre solution, avec une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while read line
    do eval print -- ${line} 
    done < test.fic
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut
    il ne trouve pas la commande print !

  9. #9
    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
    c'est a cause des caractere / dans la variable, une solution proteger dans la variables les / :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #!bin/sh
    MY_PATH="\/var\/lib\/ldap"
    MY_FILE="test.fic"
    sed "s/\$MY_PATH/$MY_PATH/g"  $MY_FILE
    resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    du texte
    voici une variable: /var/lib/ldap
    encore du texte
    sa fonctionne bien

  10. #10
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut
    en effet, cela marche , les variables prennent leur vrai valeur, mais toutes
    la mise en forme (gras, souligné, ...) n'est pas appliquée. au lieu d'avoir la mise en forme, les sequence d'echappement s'affiche du genre \033[1mDESCRIPTION\033[0m

    en réalité, le fichier que je souhaite afficher est un fichier d'aide, et je voudrais que son contenu s'adapte en fonction de la valeur des variables de mon script.

    comment faire ?

  11. #11
    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
    tout depend du logiciel d'aide (l afficheur)
    mais quelque choses comme l'appelle a ton script pipe (|) l'afficheur d'aide pourrai resoudre le probleme.

  12. #12
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut
    pourrais-tu préciser, je comprend pas trop

  13. #13
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut
    j'ai réussi a faire afficher correctement mon fichier (mise en forme et variables) avec ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo -ne "$(sed s/\$DATABASE_DIR/$DATABASE_DIR/g $HELP_FILE)"
    mais le problème c'est que la commande 'echo' affiche tous le contenu d'un seul coup et moi je voudrais pouvoir naviguer dans l'aide avec les touches de direction et sortir avec une instruction du genre 'vi' où il faut tapper :q pour retrouver l'invite de commande.
    --> connaitrais-tu un éditeur qui pourrais me permettre de faire cela et qui tiendrais compte de la mise en forme (la même syntaxe que pour echo).

  14. #14
    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
    rajoute a la fin de ta commande un pipe less
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo -ne "$(sed s/\$DATABASE_DIR/$DATABASE_DIR/g $HELP_FILE)" | less
    less utilise les fleches : haut et bas ainsi que page up et down.

  15. #15
    Membre averti
    Inscrit en
    Décembre 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Décembre 2006
    Messages : 47
    Par défaut
    Merci MarcG pour ton aide.
    Avec ta solution je peux bien naviguer avec les flèches, mais il reste tourjours les problèmes de mise en forme.

    j'ai trouver une documentation pour fabriquer une page de man pour ma commande (http://oregnier.developpez.com/cours/unix/manpage/).

    merci à tous,

    A+

  16. #16
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Citation Envoyé par Le fut
    il ne trouve pas la commande print !
    désolé... print c'est ksh
    utilise echo à la place
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

Discussions similaires

  1. Interpréter une variable contenue dans un fichier texte
    Par frederic_s dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 11/10/2007, 14h06
  2. Réponses: 5
    Dernier message: 19/07/2007, 13h06
  3. Probléme pour remplacer = dans une variable
    Par koKoTis dans le forum Scripts/Batch
    Réponses: 18
    Dernier message: 05/06/2007, 13h37
  4. Non interprétation des variables
    Par usf70 dans le forum wxPython
    Réponses: 3
    Dernier message: 09/05/2007, 13h21
  5. [ASP] include remplacer chemin par variable
    Par damn dans le forum ASP
    Réponses: 3
    Dernier message: 01/10/2004, 15h27

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