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 :

echo option -e


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut echo option -e
    Bonsoir tous ,
    je stocke de l'html dans une variable nommée $tmp ;
    comme je souhaite pouvoir visualiser facilement le source j'introduis \n avant chaque ajout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tmp="${tmp}\n ..... "
    Au final j'écris la variable dans un fichier et comme je souhaite la prise en compte des \n j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo -e $tmp > "$fichier"
    Les \n sont bien pris en compte MAIS en haut de ma page apparaît un petit "-e" ???
    Pas trop gênant mais j'aimerais m'en débarrasser !

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Bonjour.

    Ça me semble bizarre.

    Sur quel système travailles-tu? (par, exemple, quelle est la réponse à uname -a?)

    Quelle est la réponse à type echo?

    Quel shell utilises-tu? (par, exemple, quelle est la réponse à echo $SHELL?)

    Ta ligne de commande est-elle dans un script? Et si oui, quel shebang utilises-tu? (Quelle est la première ligne du script?)

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour


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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 635
    Par défaut
    Bonjour,

    on ne stocke pas le format et les données dans une variable, on utilise printf.
    c'est-à-dire qu'on "dissocie" le format des données.

    si tu utilises bash, il est très simple de faire un tableau pour les données, alors le format passé à printf sera répété pour chaque entrée du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ array=( ga bu zo meuh )
    printf '%s\n' $ "${array[@]}"
    ga
    bu
    zo
    meuh
    sinon, faut voir, mais, a priori, je pencherais pour la solution de Flodelarab.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Bonjour.

    Ça me semble bizarre.

    Sur quel système travailles-tu? (par, exemple, quelle est la réponse à uname -a?)

    Quelle est la réponse à type echo?

    Quel shell utilises-tu? (par, exemple, quelle est la réponse à echo $SHELL?)

    Ta ligne de commande est-elle dans un script? Et si oui, quel shebang utilises-tu? (Quelle est la première ligne du script?)
    MacOS HighSierra
    echo is a shell builtin
    /bin/bash
    dans un script
    /bin/sh

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf '%s\n' $ "${array[@]}"
    Une petite coquille: le $ tout seul est en trop:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf '%s\n' "${array[@]}"
    Citation Envoyé par exe2bin
    MacOS HighSierra
    echo is a shell builtin
    Tu n'as pas posté ta question dans le bon Forum, MacOS est de la famille des BSD pour ce qui concerne les aspects Unix.

    La règle quand on veut écrire des scripts portable est qu'il ne faut jamais utiliser echo pour afficher autre chose qu'une chaîne de caractère simple et sans caractères spéciaux, et qu'il ne faut jamais utiliser d'options avec echo.

    Dans tous les autres cas, il faut utiliser printf qui est beaucoup plus portable et qui est obligatoire sur tous les système Unix et Unix like respectant le standard POSIX (ou s'en approchant).

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 102
    Par défaut
    Citation Envoyé par exe2bin Voir le message
    MacOS HighSierra
    echo is a shell builtin
    /bin/bash
    dans un script
    /bin/sh
    C'est bien ce qu'il me semblait!

    Tu es ici dans un forum "linux" et MacOS n'est pas un linux (mais bien un Un*x quand même!).

    Étant moi-même sous macos, je peux quand même te répondre.

    Mon shell est aussi le bash et j'obtiens ceci dans un terminal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ echo "a\nb"
    a\nb
     
    $ echo -e "a\nb"
    a
    b
    Mais, lorsque je lance un bourne shell, j'obtiens ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $ sh
    sh-3.2$ type echo
    echo is a shell builtin
     
    sh-3.2$ echo "a\nb"
    a
    b
     
    sh-3.2$ echo -e "a\nb"
    -e a
    b
     
    sh-3.2$ uname -a
    Darwin MBPR15-jack 17.3.0 Darwin Kernel Version 17.3.0: Thu Nov  9 18:09:22 PST 2017; root:xnu-4570.31.3~1/RELEASE_X86_64 x86_64
    Conclusion: La built-in echo du Bourne shell /bin/sh interprète automatiquement les caractères avec backslash, contrairement à la built-in echo du Bourne again shell /bin/bash qui nécessite l'option -e.

    Donc tu as 3 possibilités:
    • Soit tu changes ton shebang en #!/bin/bash (avec tous les avantages d'utiliser un bon shell!) et tu gardes tes echo -e.
    • Soit tu gardes ton shebang #!/bin/sh et tu remplaces tes echo -e par des echo.
    • Soit, comme suggéré par N_BaH et Jiliagre, tu utilises printf.

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

Discussions similaires

  1. option -e de la commande echo possible par variable ?
    Par voran dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 17/01/2008, 09h53
  2. [Kylix] kylix3 : pb sur options de projet
    Par Arsene dans le forum EDI
    Réponses: 3
    Dernier message: 09/04/2003, 10h41
  3. [propriétés]Option Checked
    Par psl dans le forum Composants VCL
    Réponses: 6
    Dernier message: 22/08/2002, 08h07
  4. Parametrage des options de projet
    Par ares7 dans le forum EDI
    Réponses: 7
    Dernier message: 22/07/2002, 15h33
  5. Vous gerez comment les options d'un programme?
    Par n0n0 dans le forum C++Builder
    Réponses: 5
    Dernier message: 17/05/2002, 13h21

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