Для чтения текстового файла буквально не используйте плоскость 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
прочь по умолчанию.
если Вы получаете электронное письмо локально, метапочта может, вероятно, сделать то, что Вы ищете. много дистрибутивов Linux имеют пакет для метапочты.
вот немного информации об этом: http://www.cs.umd.edu/faq/mime.html
Иначе Вы можете разрабатывать что-то с fetchmail + procmail.
Можно использовать fetchmail и procmail, чтобы сделать это. Procmail может быть настроен для выполнения сценария, который тестирует, если электронное письмо имеет закодированные вложения какой-либо пантомимы (это могло бы быть столь же просто как просто захват файла для заголовка MIME), и затем вызывает munpack, если он имеет.
Procmail может выполнить в значительной степени что-либо, что Вы хотите, таким образом, необходимо смочь заставить его выполнять сценарий PHP или обертку оболочки.