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 :

Variable avec espace et substitution


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 19
    Par défaut Variable avec espace et substitution
    Bonjour,
    Voila mon problème,
    j'ai une variable du type:
    VAR="/home/test/Mes Documents/Mes Modèles"
    j'utilise actuellement sed pour remplacer cette variable dans un autre fichier que mon script.
    Avec l'aide de N_BaH dans cette discution: http://www.developpez.net/forums/d94...-substitution/
    J'ai réussi a créé cette variable et a l'utilisé dans 90% des cas comme je le voulais
    Mais voila j'ai un hic.
    j'ai besoin maintenant que la variable soit de la forme:
    VAR ="/home/test/Mes\ Documents/Mes\ Modèles"
    Et surtout qu'elle soit remplacer strictement comme tel dans le fichier où elle est remplacé.

    Voila Merci de votre aide.

    Totoro

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    bonjour,

    de la même manière que précédemment

    soit tu conserves la valeur dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var="/home/test/Mes Documents/Mes Modèles"
    var="${var// /\\}"
    echo "$var"
    /home/test/Mes\ Documents/Mes\ Modèles
    soit tu modifies le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/ /\\ /g' ton_fichier.txt
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 19
    Par défaut
    Merci mais je crois que je me suis mal exprimé ...
    Lors du remplacement de la variable dans le fichier de destination, je me retrouve avec /home/test/Mes Documents/Mes Modèles et non /home/test/Mes\ Documents/Mes\ Modèles
    Mon problème n'est pas de créé ou stocker la variable. Mais sont remplacement dans un autre fichier
    ex:
    Script:
    [code]#!/bin/bash
    VAR="/home/test/Mes\ Documents/Mes\ Modèles/test.txt"
    sed -i 's/EXEC/'"${VAR//\//\\/}"'/' fichier2.txt

    Fichier2.txt avant modif:
    Fichier2.txt après modif (se que j'aimerais):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    cat /home/test/Mes\ Documents/Mes\ Modèles/test.txt
    Fichier2.txt après modif (se que j'ai):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    cat /home/test/Mes Documents/Mes Modèles/test.txt
    Je pense que mon problème est au niveau du sed dans le script. Sauf si sed n'est pas la bonne commande

    Merci de votre aide

    Totoro

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    oui, sed est la bonne commande, le problème c'est la protection du \ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sed 's@EXEC@'"${var//\\/\\\\}"'@' totorux-DVP.in 
    #!/bin/bash
    cat /home/test/Mes\ Documents/Mes\ Modèles
    comme tu le vois, je ne modifie plus les /
    j'utilise un autre délimiteur d'expression pour sed : @
    le \ étant le caractère de protection, il faut le surprotéger.

    --
    un petit conseil : évite de mettre le nom de tes variables en majuscules, il n'y a que les variables d'environnement qui devrait l'être. On ne sait jamais, il se peut qu'un jour, malencontreusement, tu nommes une de tes variables du même nom qu'une variable d'environnement, qui sera alors écrasée, et là, le shell risque de ne plus fonctionner aussi bien.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Inscrit en
    Février 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 19
    Par défaut
    Waw super merci
    Je savais pas qu'on pouvais aussi facilement changer les délimiteurs sous sed,
    et merci pour le conseil je vais le suivre
    Merci encore :p

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

Discussions similaires

  1. [Dates] envoi de variable avec espaces
    Par gastoncs dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2007, 17h09
  2. [MySQL] Récupérer variable avec espaces dans une liste déroulante
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/09/2007, 03h01
  3. [AJAX] Passage de variable avec espace blanc et insecam
    Par ascito dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/07/2007, 11h51
  4. Récupération de variable avec espaces
    Par Maestro57 dans le forum Langage
    Réponses: 4
    Dernier message: 20/06/2007, 19h17
  5. Pb variable avec espace vers une popup
    Par rdams dans le forum Langage
    Réponses: 5
    Dernier message: 30/08/2006, 15h20

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