Пытаюсь парсить письмо с помощью скрипта. Само письмо "попадает в скрипт" через канал (stdin).
В частности рассмотрим следующую последовательность строк:
Код: Выделить всё
Received: from ey-in-f111.1e100.net [74.125.79.111]
by c0a8:764:1872:ff7f::5f:4300 with IMAP (fetchmail-6.3.13)
for <vPostman@localhost> (single-drop); Fri, 18 Dec 2009 00:14:04 +0300 (MST)
Received: by 10.140.132.1 with SMTP id f1cs449891rvd; Thu, 17 Dec 2009
13:11:51 -0800 (PST)
Скрипт:
Код: Выделить всё
#! /bin/sh
while read LINE; do
echo "$LINE"
done
Выводит:
Код: Выделить всё
Received: from ey-in-f111.1e100.net [74.125.79.111]
by c0a8:764:1872:ff7f::5f:4300 with IMAP (fetchmail-6.3.13)
for <vPostman@localhost> (single-drop); Fri, 18 Dec 2009 00:14:04 +0300 (MST)
Received: by 10.140.132.1 with SMTP id f1cs449891rvd; Thu, 17 Dec 2009
13:11:51 -0800 (PST)
"услужливо" подрезая начальные пробелы (табуляцию), наличие которых (в данном случае) указывает, что строка является продолжением предыдущей.
На данный момент решил эту проблему с помощью регулярных выражений... но, это "тяжелое" решение + не совсем в нем уверен.
ВОПРОС 1: как получить с stdin полную строку (с начальными пробелами)?
-------------------------------------------
Второй вопрос касается "косвенных ссылок" на переменные.
Код: Выделить всё
VAR=""
RLINK="VAR"
eval $RLINK="some_text"
echo "$VAR"
Этот вариант нормально отрабатывает и выдает "some_text", но как только появляется пробел в строке "some text", то на выходе получаем:
Код: Выделить всё
test.sh: eval: 1: text: not found
ВОПРОС 2: можно ли присвоить переменной по ссылке произвольную строку текста?
Заранее СПАСИБО за Ваши ответы!