Мне интересно в письменной форме программа, которая получит размер почтового буферного файла для пользователя. (Буферные файлы, найденные в/var/spool/mail/$USER на Linux). Чтобы сделать это, я хотел бы создать непрерывный цикл что экс-кутис один раз в 30 секунд. Каждый раз, когда цикл выполняется, он сравнит размер почтового буферного файла с его размером от предыдущего цикла. Если новый размер будет больше, чем старый размер, то у меня будет он, печатают сообщение, говоря, что "У Вас есть новая почта".
Я записал сценарий ниже, но мне не удается заставить его работать. У кого-либо есть какие-либо предложения для меня??
while true
do
clear
size= ls -l /var/spool | wc -c
sleep 30
newsize= ls -l /var/spool | wc -c
if [$size < $newsize]
then
echo "You've got mail!"
else
echo "Sorry no mail yet"
fi
sleep 30
done &
Можно использовать бесконечный цикл в ударе:
while true ; do
# Your code here.
sleep 30;
done
можно также запланировать периодическое выполнение программы проверки крон .
Да, Вам нужен бесконечный цикл со сном 30 секунд. Следующий отрывок сделает:
#!/bin/bash
while true
do
# do any stuff you want
echo "doing my thing"
# sleep for 30 seconds
sleep 30
done
, Но я думаю, что Вы скоро найдете, что выполнение его в сценарии удара, вероятно, не, что Вы хотите сделать. Задачи как это обычно требуют некоторой формы демона.
Для ответа на измененный вопрос вот изменение сценария, который должен работать как ожидалось:
#!/bin/bash
while true
do
clear
size=$(ls -l /var/spool | wc -c)
sleep 30
newsize=$(ls -l /var/spool | wc -c)
if [ $size -lt $newsize ]
then
echo "You've got mail!"
else
echo "Sorry no mail yet"
fi
sleep 30
done