17

Я хочу использовать sendmail для отправки мне вещей и хочу сделать это в личном кабинете.

echo "mail content" | sendmail emailataddres.com 

Посылает это без темы.

Строка темы должна предшествовать содержимому Mail, поэтому я ищу что-то вроде:

echo "mail content" | prepend "Subject: All that matters" | sendmail emailataddres.com 

sed и awk, как правило, очень неудобны в использовании и запоминании.

РЕДАКТИРОВАТЬ: Просто чтобы уточнить: echo "Почтовый контент" является просто иллюстративным примером. Мне нужно иметь возможность добавлять материал к потокам stdout из любого источника. например: ifconfig, zcat и т. д.

4 ответа4

36
$ echo 1 | (echo 2 && cat)
2
1

Я почти уверен, что есть более хорошее решение, но это должно сработать.

4

Это вдохновлено ответом Клавдия.

Если вы не хотите прерывания между выходами, добавьте параметр -n . Это будет выглядеть так:

$ echo 1 | (echo -n 2 && cat)

Который даст:

21

4

Или используйте то, что сказал Клавдий, или сделайте свое:

~/ Bin / перед именем:

#!/bin/sh
echo -en "$@"
cat -

например:

$ echo "Splendid SUPANINJA! Let's do it!" |\
     prepend "Subject: Venetian Snares\n"

Subject: Venetian Snares
Splendid SUPANINJA! Lets do it!

1

Из кусочков, которые я собрал ... вы можете сделать что-то вроде этого:

echo "Subject: All that matters
`echo "mail content"`" | sendmail blah@blahblah

Обратите внимание, что я не закрывал кавычки в первой строке ... потому что не все оболочки переводят \n в символ новой строки ... но мне еще предстоит найти такой, который не будет обрабатывать фактическую новую строку внутри кавычек.

Когда команда заключена в символ `, она будет выполнена, а вывод будет введен на месте. Имейте в виду, что этот фрагмент кода немного опасен, так как можно встроить дополнительные встроенные команды, которые могут легко скомпрометировать вашу систему ...

**** edit **** Следуя совету Клавдия, более чистый вариант будет выглядеть так:

echo -e "Subject: All that matters \n $(echo "mail content") |sendmail blah@blahblah

Даже с этим шаблоном его можно использовать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .