Je constate qu'un appel à la commande mail provoque la suspension d'un script sans erreur. Pour fermer le script, je dois ctrl-c ou émettre une commande kill sur l'identifiant du processus.
La section pertinente du script est ci-dessous :
EMAIL_TO="[email protected]"
if [ -f /www/archives/pdf/pdf_201207021048.tar ]; then
echo "file exists"
else
echo "file does not exist"
fi
echo "sending mail next..."
mail -s "pdfbackup" "$EMAIL_TO"
echo "mail sent?"
Lors de l'exécution, je vois le texte "envoi de courrier suivant ..." et rien de plus. Il ne revient jamais à l'invite.
Je peux voir que le script est toujours en mémoire avec ps -ax | grep monscript.sh.
J'ai essayé d'utiliser des guillemets autour du sujet et de l'e-mail, et encore sans. Le même résultat est produit dans les deux sens.
Qu'est-ce que je fais de mal ?
Réponse acceptée :
Le mail
le programme s'attend à ce que l'utilisateur tape le message sur son entrée standard (terminé par EOF (Ctrl-D )). Vous ne redirigez pas stdin, le programme attend une entrée. Vous pouvez soit rediriger depuis /dev/null
(pour un message vide), à partir d'un fichier prêt à l'emploi, ou à partir d'un tube, par exemple :
echo Hi, just sending you a message | mail -s "pdfbackup" "$EMAIL_TO"
ou
mail -s "pdfbackup" "$EMAIL_TO" < /dev/null
Ces deux éléments devraient résoudre le problème.