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 :

Sh - Variable chaine mutliligne.


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut Sh - Variable chaine mutliligne.
    Bonjour à tous !

    Je ne suis pas très habitué à faire des scripts sh, mais la je bute sur un problème vraiment très bête :
    J'aimerai affecter à une variable une chaine multiligne...

    ... pour l'instant, j'ai ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #! /bin/sh
     
    chaine="
    ligne1 \n
    ligne2 \n
    ligne3 \n"
     
    echo $chaine;
    et ca m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ligne1 \n ligne2 \n ligne3 \n
    C'est normal ? Comment je fais alors ?

    Merci d'avance pour vos réponses !

  2. #2
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Bonjour,

    Il suffit de faire tout simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var="ca
    va
    bien
    "
    echo $var

  3. #3
    Membre habitué
    Inscrit en
    Août 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 156
    Points : 187
    Points
    187
    Par défaut
    utilise
    et tout ira mieux (-e pour eval)

  4. #4
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    nyall, ta solution ne marche pas vraiment...

    La solution de darkloran marche, dans le cas d'un affichage...

    Mais j'aimerai bien utiliser ma variable multiligne avec d'autres programmes qui prennent du texte en stdin. Suis-je donc obligé de mettre pour chaque programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo -e $machaine | monsoft
    Comme par exemple, pour cat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo -e $machaine | cat > fichier_test
    ?

  5. #5
    Membre habitué
    Inscrit en
    Août 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 156
    Points : 187
    Points
    187
    Par défaut
    la réponse est

    si tu ne mets pas le -e, echo n'évalue pas les caractères spéciaux...
    ceci dit, si tu écris "\n" dans un pipe vers un programme qui évalue (de son côté) les caractères spéciaux, bin ça devrait fonctionner

  6. #6
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Mouais... ok...

    Autre question bête sur un problème qui me gêne :

    J'ai ma chaine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    chaine="
    bonjour\n
    hello\n
    dobriden\n
    "
    et je l'affiche :
    et bien le problème, c'est que j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    prompt$
     bonjour
     hello
     dobriden
    prompt$
    Vous voyez ? Oui, le chti espace qu'il y a devant chaque ligne... bein ca me gêne !!!
    C'est normal ? Comment puis-je y remédier ?

    Merci !

  7. #7
    Membre habitué
    Inscrit en
    Août 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 156
    Points : 187
    Points
    187
    Par défaut
    comme le \n est évalué, tu n'as pas besoin d'aller à la ligne dans ta variable

    tu devrais donc juste avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    chaine="bonjour\nhello\ndobriden\n" 
     
    echo -e $chaine;

  8. #8
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Oui, mais bon, je ne vais pas m'amuser à taper un texte de 30 lignes en une seule... ca me parait un peu lourd ;)

  9. #9
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Oula excusez moi. Il ya une petite erreur dans le code. (A quoi je pensais )
    Voici ce qu'il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #! /bin/sh
     
    chaine="
    ligne1
    ligne2
    ligne3"
     
    echo "$chaine"
    Utiliser echo -e n'est pas une solution portable car cette option n'est pas toujours presente.

  10. #10
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Ah ouai, ca marche... subtile de devoir encadrer le parametre de echo avec des ""... Je suis vraiment trop habitué au perl moi !

    Merci !

  11. #11
    Membre habitué
    Inscrit en
    Août 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 156
    Points : 187
    Points
    187
    Par défaut
    Citation Envoyé par nyal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #! /bin/sh
    echo "$chaine"
    Utiliser echo -e n'est pas une solution portable car cette option n'est pas toujours presente.
    ah oui c'est bien aussi ça
    ça plaira sûrement plus à 'gogoye'

    ceci dit gogoye pour pas avoir les espaces.. tu mets un \ à chaque fin de ligne pour utiliser avec le '-e'

  12. #12
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Ok, merci pour le renseignement, mais la solution de nyal me plait plus ;)

  13. #13
    Membre habitué
    Inscrit en
    Août 2003
    Messages
    156
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 156
    Points : 187
    Points
    187
    Par défaut
    Citation Envoyé par Gogoye
    Ok, merci pour le renseignement, mais la solution de nyal me plait plus
    à moi aussi

    pense au tag résolu

  14. #14
    Membre du Club
    Inscrit en
    Mars 2002
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 88
    Points : 59
    Points
    59
    Par défaut
    Hop, voici un probleme supplémentaire de résolu...

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 22/02/2008, 22h02
  2. [Smarty] [IE6] {include file...avec variable chaine = pb de syntaxe
    Par speedev dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 15/11/2007, 18h25
  3. Comparaison de 2 variables (chaines de caractères)
    Par beberd dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/11/2006, 16h19
  4. [MySQL] code php dans une variable chaine php
    Par unmulot dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 11/07/2006, 11h48
  5. [MySQL] requete avec variable chaine de caractere
    Par infotron dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/10/2005, 23h03

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