Forum Programmation.shell Problème pour ajouter des guillemets à une variable

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
21
déc.
2017

Bonjour,

Voici mon script :

for line in $(cat liste_mail.txt)
do
  adresse=`echo $line | cut -d \, -f 2`

  echo $adresse
  ./sendmail.sh "\"$adresse\""
done

Le problème c'est que l'adresse mail apparaît sous la forme :

"nom@free.fr

et non comme ceci

"nom@free.fr"

Quelqu'un aurait-il une solution à m'apporter ?

Cordialement,

  • # Format de

    Posté par  . Évalué à 3.

    liste_mail.txt

  • # guillemets

    Posté par  (site web personnel) . Évalué à 1.

    echo "$adresse"
    

    Un LUG en Lorraine : https://enunclic-cappel.fr

    • [^] # Re: guillemets

      Posté par  . Évalué à 3.

      Important de le rappeler !

      Toujours mettre des guillemets autour des variables censé contenir une chaîne de caractère, même si celle-ci ne.doit.jamais.au.grand.jamais.avoir.despace… ça permet déjà pour commencer de les différencier visuellement des variables censées contenir des entiers.

      Je suis pas fan de "déquoter" sciemment une chaîne pour la passer comme un tableau… je pense que c’est une mauvaise pratique… et vous ?

  • # re

    Posté par  . Évalué à 2.

    \""$adresse"\"

  • # J'aurais pas fait comme ça ...

    Posté par  . Évalué à 2. Dernière modification le 21 décembre 2017 à 13:45.

    … mais plutôt un truc du genre :

    for adresse in $(cut -d \, -f 2 liste_mail.txt)
    do 
        echo $adresse 
        ./sendmails.sh $adresse
    done
    

    ou alors :

    OLDIFS=IFS
    IFS=','
    while read a adresse
    do
     echo $adresse; ./sendmail.sh $adresse 
    done < liste_mail.txt
    IFS=OLDIFS
    
  • # Deux délimiteurs de chaine

    Posté par  . Évalué à 2.

    En bash tu as deux limiteurs de chaine, en plus tu peux les coller pour les concaténer…

    ./sendmail.sh '"'"$adresse"'"'  #devrait marcher

    Après, ça peut dépendre de l’intérieur du script et de comment sendmail.sh gére le paramètre $1

    $ adresse=toto
    $ echo  '"'"$adresse"'"'  #devrait marcher
    "toto"
    $
  • # variable, ou sendmail ?

    Posté par  (site web personnel) . Évalué à 3.

    Le problème c'est que l'adresse mail apparaît sous la forme :

    Où apparaît-elle comme ça ? Dans le mail que tu reçois ? Si oui, il s'est passé beaucoup de choses entre ton script et ce que tu observes … A priori, la syntaxe "\"$adresse\"" est bien celle que tu cherches, le guillemet a du disparaître ailleurs.

    Mais pourquoi cherches-tu à faire ça ? Il n'y a pas de guillemets autour des adresses email. Au contraire, les guillemets sont là pour déliminer le nom dans "Prénom Nom" <prenom.nom@example.com>.

  • # Je n'aime pas les jeux de hasard

    Posté par  . Évalué à 3. Dernière modification le 21 décembre 2017 à 19:45.

    Bonjour

    Quel est le nom du shell utilisé ?
    Quel est le contenu de liste_mail.txt ?
    Quel est le contenu de sendmail.sh ?

    Merci

  • # Finalement, Je vais jouer un peu

    Posté par  . Évalué à 1. Dernière modification le 21 décembre 2017 à 20:33.

    sed 's/.*"\(.*@.*\)".*/\"\1\"/' liste_mail.txt| xargs ./sendmail.sh

  • # dommage

    Posté par  . Évalué à 1.

    … qu'on ne puisse pas supprimer ses messages 10 minutes après.

    J'aurais pas du jouer. Désolé

    • [^] # Re: dommage

      Posté par  . Évalué à 5.

      Désolé

      C’est pas grave, pas la peine de demander ou exiger des excuses pour ça.

      C’est une très bonne chose que les messages « restent », tels qu’ils ont été écrits. Je ne sais pas si tu te rends bien compte des manifestations de mauvaise foi auxquelles nous assisterions sur tel ou tel commentaire si ce n’était pas le cas :) Après… c’est peut-être moi qui voit le mal partout…

      • [^] # Re: dommage

        Posté par  . Évalué à 1.

        Merci pour ton message, je ne n'avais pas pensé à envisagé la chose de ce point de vue.

      • [^] # Re: dommage

        Posté par  . Évalué à 5.

        clairement. Ceci dit, il aurait pu se répondre a lui-même plutôt que créer un autre fil :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.