Commande mail

Résolu
Bonjour,

j'essaye d'envoyer un mail a mon compte utilisateur en local.

j'utilise bien evidement la commande mail de cette maniere dans un script bash.

${SUBJECT}="test"

mail -s ${SUBJECT} ${DEST} < ${MESSAGE}

cela marche bien sauf quand ma variable ${SUBJECT} comporte une phrase

${SUBJECT}="test test"

je n'arrive pas a lui passer des guillemets.

pourriez-vous m'aider ?
Configuration: Linux
Mozilla 1.9.1.6

3 réponses

  1. Modérateur
    Salut,

    Les variables en bash se déclarent ainsi :

    SUBJECT="test"
    echo "${SUBJECT}"

    0
    1. oui c'est une erreur de frappe
      0
    2. Modérateur
      @FranckOk, par contre que veux-tu dire par "je n'arrive pas a lui passer des guillemets."
      0
    3. @jipicyen fait j'essaye de stocker toutes la commande dans une variable.
      mais quand j'ecris un ${SUBJECT} avec plusieurs mots la commande se plante.
      alors j'essaye de placer des guillemets dans ma commande pour indiquer que ${SUBJECT} est une chaine
      0
  2. oui je me suis trompé en ecrivant le post mais s'est bien se que j'ai ecrit dans mon script.

    #!/bin/bash
    SUBJECT="[SUJET] aucun"
    DEST="root@systeme,user@systeme"
    MESSAGE="/home/user/test.mail"
    SENDMAIL="mail -s \"${SUBJECT}\" ${DEST} < ${MESSAGE}"

    ${SENDMAIL}
    0
    1. Modérateur
      Et où est le problème alors ???
      0
    2. @jipicysa ne fonctionne pas, la commande reste bloquée
      0
    3. @jipicyquand j'affiche ma commande,
      echo ${SENDMAIL}

      sa me retourne,
      mail -s "[SUJET] aucun" root@systeme,user@systeme < /home/user/test.mail

      cela me semble correcte mais quand je l'execute,

      :~$ sudo /etc/scripts.d/sendMail.sh

      ^C
      (Interrupt -- one more to kill letter)
      ^C
      :~$

      le script reste "bloqué", je suis obligé de couper (ctrl+c), en espérant etre plus clair
      0
  3. Modérateur
    Et comme ça :

    eval ${SENDMAIL}

    Ça marche pas mieux ?
    0
    1. ah si avec eval sa marche impec.

      qu'est ce que eval ?
      0
    2. Modérateur
      @FranckVoir "man bash" :
             eval [arguments ...]
                    Les arguments sont lus et regroupés en une seule  commande  sim-
                    ple.  Cette  commande est alors lue et exécutée par le shell, et
                    son code de retour est renvoyée  comme  valeur  de  la  commande
                    eval.   S'il  n'y a pas d'arguments, ou uniquement des arguments
                    nuls, eval renvoie vrai.
      0