In herkömmlichen Cron-Implementierungen ist dies nicht möglich. Variablendefinitionen in einer Crontab sind global, und Cron verwendet für alle Befehle dieselbe E-Mail-Adresse.
Eine Problemumgehung besteht darin, eine lokale Adresse zu verwenden und basierend auf der Eingabe umzuleiten.
Eine andere Methode zum Senden der Ausgabe eines Jobs an eine andere Adresse besteht darin, das Senden manuell durchzuführen. Siehe So leiten Sie die Ausgabe von einem Prozess an einen anderen weiter, führen sie jedoch nur aus, wenn der erste eine Ausgabe hat. für verschiedene Methoden.
Einige moderne Cron-Implementierungen, zumindest die in systemd, analysieren die Crontab anders (danke geedoubleya , jarauh ): Für diesen Job gelten nur Zuweisungen über einer Jobzeile . Wenn Sie also auf einem modernen Linux-System arbeiten, besteht die Möglichkeit, dass Sie dies tun können. Überprüfen Sie die Dokumentation auf Ihrem System ( man 5 crontab
).
Sie können immer noch nicht das tun, was Sie in Ihrer Frage vorgeschlagen haben, da cron die rechte Seite der Variablenzuweisungen nicht erweitert. MAILTO=$OLDMAILTO
setzt MAILTO
auf einen Wert, der mit einem Dollarzeichen beginnt. Sie müssen die alte Adresse wiederholen.
# Make a hambone appear. Email sent to the user running the crontab.
* * * * * /scripts/hambone.pl
MAILTO=abrahams@example.com
#Do something. Email sent to abrahams@example.com
* * * * * /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
Beachten Sie auch, dass MAILTO=porklover.cramble.edu
E-Mails an das Konto porklover.cramble.edu
auf dem lokalen Computer gesendet werden. Das ist wahrscheinlich nicht was du willst.