Существует ли почтовый клиент командной строки и вложение автозагрузки в файл?

Для чтения текстового файла буквально не используйте плоскость read, который обрабатывает вывод двумя способами:

  • read интерпретирует \ как символ ESC; использовать read -r выключить это.
  • read разделения в слова на символах в $IFS; набор IFS к пустой строке для выключения этого.

Обычная идиома для обработки текстового файла линию за линией

while IFS= read -r line; do …

Для объяснения этой идиомы посмотрите, Почему while IFS= read используемый так часто, вместо IFS=; while read..?.

Для записи строки буквально только используйте плоскость echo, который обрабатывает строку двумя способами:

  • На некоторых оболочках, echo Escape обратной косой черты процессов. (На ударе это зависит ли xpg_echo опция установлена.)
  • Несколько строк рассматривают как опции, например. -n или -e (точный набор зависит от оболочки).

Портативный способ распечатать строку буквально с printf. (В ударе нет никакого лучшего пути, если Вы не знаете, что Ваш вход не похож на опцию к echo.) Используют первую форму для печати точной строки и второй формы, если Вы хотите добавить новую строку.

printf %s "$line"
printf '%s\n' "$line"

Это только подходит для обработки текста, потому что:

  • Большинство оболочек будет дросселировать на нулевых символах во входе.
  • При чтении последней строки у Вас нет способа знать, была ли новая строка в конце или нет. (Некоторые более старые оболочки могут испытать большие затруднения, если вход не заканчивается новой строкой.)

Вы не можете обработать двоичные данные в оболочке, но современные версии утилит на большинстве нельдов могут справиться с произвольными данными. Для передачи всего входа до вывода использовать cat. Продолжение на касательную, echo -n '' сложный и непортативный способ ничего не сделать; echo -n был бы так же, как хороший (или не в зависимости от оболочки), и : является более простым и полностью портативным.

: >| "$file"
cat >>"$file"

или, более простой,

cat >|"$file"

В сценарии Вы обычно не должны использовать >| с тех пор noclobber прочь по умолчанию.

4
28.09.2011, 17:42
2 ответа

если Вы получаете электронное письмо локально, метапочта может, вероятно, сделать то, что Вы ищете. много дистрибутивов Linux имеют пакет для метапочты.

вот немного информации об этом: http://www.cs.umd.edu/faq/mime.html

Иначе Вы можете разрабатывать что-то с fetchmail + procmail.

2
27.01.2020, 20:59

Можно использовать fetchmail и procmail, чтобы сделать это. Procmail может быть настроен для выполнения сценария, который тестирует, если электронное письмо имеет закодированные вложения какой-либо пантомимы (это могло бы быть столь же просто как просто захват файла для заголовка MIME), и затем вызывает munpack, если он имеет.

Procmail может выполнить в значительной степени что-либо, что Вы хотите, таким образом, необходимо смочь заставить его выполнять сценарий PHP или обертку оболочки.

1
27.01.2020, 20:59

Теги

Похожие вопросы