Обратите внимание на разницу между этими двумя операторами:
- направляет вывод команды в
at
- , передает текст команды для выполнения в
at
Сценарий, который вы показали, выполняет первое, а вы хотите сделать второе:
cat << EOF | at "now + $NumberofDays days"
echo "Root access revoked for $name" | \
mailx -s "root access revoked for $name on $TODAY" xyz@example.com
EOF
Я также добавил «дней» после $NumberofDays
(спасибо @ User123 !) в аргументах команды at
, иначе это неправильный синтаксис для at
.