2012-02-15 2 views
0

Я хотел бы, чтобы отформатировать содержание почты прежде чем отправить, Вот мой код,Как отправить отформатированный тело почты Unix Script

echo "Time: `$TIMESTAMP_CMD\n\n$EMAIL_BODY" | mail -s "$EMAIL_SUBJECT" ${EMAIL_DIST} 

TIMESTAMP_CMD, EMAIL_BODY, EMAIL_SUBJECT и EMAIL_DIST являются переменными, которые определены выше этого кода ,

Здесь мне нужны разрывы между TIMESTAMP_CMD и EMAIL_BODY. Как его достичь?

ответ

2

Использование

printf "Time: $TIMESTAMP_CMD\n\n$EMAIL_BODY" 

Также вы использовать резервную клеща в echo которая вызывает shell. Но, похоже, $TIMESTAMP_CMD содержит команду оболочки. Так что вы хотели бы что-то вроде этого,

printf "Time: `$TIMESTAMP_CMD`\n\n$EMAIL_BODY" 
# or 
printf "Time: $($TIMESTAMP_CMD)\n\n$EMAIL_BODY" 
# or 
printf "Time: %s\n\n$EMAIL_BODY" "$($TIMESTAMP_CMD)" 
+1

+1, но я думаю, что обратный ход не посторонний. Скорее, закрывающий backtick отсутствует, и OP хочет printf «Time:% s \ n \ n% s» "$ ($ TIMESTAMP_CMD)" "$ EMAIL_BODY" –

+0

@William спасибо. Я должен был догадаться. Обновлен мой ответ. –

2

Если вы решили использовать echo, то вы можете сделать использование -e переключателя, чтобы включить интерпретацию восьмеричным что-то вроде echo -e "Time: $TIMESTAMP_CMD\n\n$EMAIL_BODY". Вы можете обратиться к страницам руководства или к этому link для получения дополнительной информации. И, как указывалось ранее, пожалуйста, избавитесь от обратного хода (`), когда echo ing.
Надеюсь, это поможет!

Смежные вопросы