Как cat
и tee
являются бесполезными ; tee
вдвойне, и причина (то, что вы воспринимаете как) замерзание сценария. Требуется аргумент имени файла, в который файл должен копировать свои входные данные, и поток текста или данных на стандартный ввод, который, конечно, он не получает, поэтому он находится там.
Кроме того, вы обычно должны указывать свои переменные .
SENDER
Экстракции рода проблематичным. Вы действительно хотите, чтобы переменная содержала две строки? Обычно вы можете просто сделать formail -rtzxTo: <"$file"
и получить вменяемый результат. ( -t
Опция имеет некоторую неясную семантику, но для такого рода целей она, вероятно, делает правильные вещи.) Это также избавляет от надоедливых cut
s, чтобы получить только конечный адрес электронной почты (потому что formail
в режиме генерации ответа это уже делает для вас).
Наконец, sh
синтаксис не допускает пробелов вокруг знака равенства в присваиваниях.
for file in msg.*; do SENDER=$(formail -zxFrom: -zxReply-To: <"$file" | cut -fs- -d'<'|cut -f1 -d'>') SUBJECT=$(formail -zxSubject: <"$file") if grep -qxis "$SENDER" /home/pi/Mail/.markus; then SENDER2=Markus elif grep -qxis "$SENDER" /home/pi/Mail/.someone; then SENDER2=Someone fi mkdir -p /home/pi/Mail/"$SENDER2" munpack -C /home/pi/Mail/"$SENDER2" "$file" cat "$file" rm "$file" done
Я также удалил полные пути из имен команд (вы должны просто убедиться, что вы PATH
в порядке) и переключился с `obsolescent`
синтаксиса замены процесса на $(modern)
. mkdir -p
работает тихо, поэтому я удалил перенаправление вывода с этого.
Комплекс grep
может быть заменен простым отображением, примерно так:
SENDER2=$(awk -v who="$SENDER" ' $1 == who { print $2; x=1 } END { exit 1-x }' <<'________HERE' msmith@dmel.example.com Markus someone@there.example.net Someone ________HERE
Это делает предположения о том, что у вас есть в файлах, которые вы в настоящее время извлекаете, но вы должны понять. Это все еще не решает, как установить, SENDER2
если у вас нет отправителя в файле; но, возможно, сценарий должен просто полностью отклонить эти файлы по соображениям безопасности?