Проблема, Вы используете в для чего-то, который, как не предполагают, использовался для, действительно. У Вас также есть две конфликтующих цели: "выполненная программа 2 после программы 1" и "выполненной программы 2 в 17:00 12 января".
Одна часть Вашей проблемы проста решить: в позволяет несколько команд. Так, вместо просто использования at
запланировать sas
сценарий, можно поместить rm
в задании также.
at 5:00 PM JAN 11 <<EOJ
sas program1.sas
rm file1.sas7bdat file2.sas7bdat file3.sas7bdat file4.sas7bdat file5.sas7bdat
EOJ
Нет никакой причины &
в sas
строка; at
всегда задания выполнений "в фоновом режиме".
Затем, необходимо изобразить, как Вы хотите решить конфликт, упомянутый ранее. В частности, если задание 11 января не закончилось 24 часа спустя (к 17:00 12 января). Существует несколько способов пойти об этом:
rm
.sleepenh
, при наличии, чтобы не делать вычисление самостоятельно).Ваше echo
утверждение должно действительно выводить новые строки, а не последовательность \
с последующим n
. Вы можете сделать это, предоставив опцию -e
:
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com
Чтобы понять, в чем разница, посмотрите на вывод из следующих двух команд:
echo "Subject:Hello \n\n I would like to buy a hamburger\n"
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n"
«здесь документ» в сценариях оболочки (вы составляете заголовки и тело сообщения)
#!/bin/sh
TO=email@example.com
/usr/sbin/sendmail -i $TO <<MAIL_END
Subject: Hello
To: $TO
I would like to buy a hamburger
MAIL_END
тело сообщения от внешнего файла
#!/bin/sh
TO=email@example.com
BODY_FILE=mail.txt
(cat - $BODY_FILE)<<HEADERS_END | /usr/sbin/sendmail -i $TO
Subject: Hello
To: $TO
HEADERS_END