#!/bin/bash MESSAGE="Line one. /n" MESSAGE="$MESSAGE Line two. /n" MESSAGE="$MESSAGE Line three." echo $MESSAGE | mail -s "test" "example@example.com" Is that how I should get each line, on its own line?
3 Réponses :
Utilisez un Heredoc .
mail -s "test" "example@example.com" << END_MAIL Line one. Line two. Line three. END_MAIL
Si vous citez le premier délimiteur (ici end_mail code>), il empêchera l'expansion des paramètres, la substitution de commande, etc., qui peut être souhaitable.
Le conseil Heredoc est bon, plus vous voudrez peut-être envisager d'utiliser sauf si vous utilisez SendMail, il est également judicieux de définir la variable code> Mailrc code> sur mailx code> pour lequel il existe une norme POSIX ou peut-être
sendmail code> qui existe si le mailer est SEDMAIL ou postfix. (Je ne suis pas sûr de Qmail.) P>
/ dev / null code> pour contourner le script de configuration de l'utilisateur, le cas échéant. P>
Je suis un grand fan d'utilisation de sendmail code> dans les scripts shell. +1
Modification: à: p>
Cela devrait être la réponse acceptée. Le commutateur -E code> étend les caractères
\ n code> Nouveauline comme prévu et est plus facile à utiliser dans un script sur une seule ligne que la méthode Heredoc.
Jim, bienvenue à Stackoverflow. N'oubliez pas de formater vos échantillons de code en les sélectionnant et en appuyant sur le bouton "Code" (celui avec ceux avec des zéros).
Merci pour la pointe du bouton de code :)