Tanto o cat
quanto o tee
são inúteis ; o tee
duplamente, e a razão para (o que você percebe) o congelamento do script. Requer um argumento de nome de arquivo, como o arquivo para copiar sua entrada, e um fluxo de texto ou dados na entrada padrão, o que obviamente não está recebendo, então fica lá.
Além disso, você deve geralmente citar suas variáveis .
A extração SENDER
é meio problemática. Você realmente quer que a variável contenha duas strings? Normalmente, você poderia simplesmente fazer formail -rtzxTo: <"$file"
e obter um resultado sensato. (A opção -t
tem alguma semântica obscura, mas para esse tipo de finalidade, provavelmente faz a coisa certa.) Isso também acaba com o incômodo cut
s para obter apenas o terminal de email (porque formail
na geração de resposta modo já faz isso para você).
Por fim, a sintaxe sh
não permite espaços em branco ao redor das atribuições de sinal de igual.
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
Também removi os caminhos completos dos nomes dos comandos (você deve simplesmente certificar-se de que seu PATH
é são) e alternou da sintaxe de substituição do processo 'obsolescent'
para $(modern)
. mkdir -p
é executado silenciosamente, por isso removi o redirecionamento de saída disso.
O complexo grep
pode ser substituído por um mapeamento simples, algo assim:
SENDER2=$(awk -v who="$SENDER" '
$1 == who { print $2; x=1 } END { exit 1-x }' <<'________HERE'
[email protected] Markus
[email protected] Someone
________HERE
Isso faz suposições sobre o que você tem nos arquivos que você está usando atualmente, mas você deve ter a idéia. Isso ainda não resolve como definir SENDER2
se você não tiver o remetente arquivado; mas talvez o script simplesmente rejeite esses arquivos por motivos de segurança?