Nas implementações tradicionais do cron, você não pode fazer desta maneira. As definições de variáveis em um crontab são globais, e o cron usa o mesmo endereço de e-mail para todos os comandos.
Uma solução alternativa seria usar um endereço local e redirecionar com base na entrada.
Outro método para enviar a saída de um trabalho para um endereço diferente é fazer o envio manualmente. Veja pipe saída de um processo para outro, mas só executar se o primeiro tem saída? para vários métodos.
Algumas implementações modernas do cron, pelo menos a do systemd, analisam o crontab de forma diferente (obrigado geedoubleya , < href="https://unix.stackexchange.com/users/152830/jarauh"> jarauh : somente atribuições acima de uma linha de trabalho se aplicam a esse trabalho. Então, se você está em um sistema Linux moderno, há uma chance de fazer isso. Verifique a documentação no seu sistema ( man 5 crontab
).
Você ainda não pode fazer o que propôs na sua pergunta, porque o cron não expande o lado direito das atribuições de variáveis. MAILTO=$OLDMAILTO
define MAILTO
para um valor que começa com um cifrão. Você precisa repetir o endereço antigo.
# Make a hambone appear. Email sent to the user running the crontab.
* * * * * /scripts/hambone.pl
[email protected]
#Do something. Email sent to [email protected]
* * * * * /scripts/chown_abrahams_niece.sh
MAILTO=
# Hunt rabbits. Doesn't send email.
* * * * * /scripts/hunt.pl --rabbits
MAILTO=bob
# Eat Ham. Email sent to bob on the local machine.
* * * * * /scripts/manga_ham.py
Observe também que MAILTO=porklover.cramble.edu
enviaria mensagens para a conta porklover.cramble.edu
na máquina local. Isso provavelmente não é o que você quer.