
나는 사용자의 메일 스풀 파일 크기를 알아내는 프로그램을 작성하고 싶습니다. (Linux의 /var/spool/mail/$USER에 있는 스풀 파일) 이를 위해 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 &
답변1
Bash에서 무한 루프를 사용할 수 있습니다.
while true ; do
# Your code here.
sleep 30;
done
다음을 통해 정기적인 검사 프로그램 실행을 예약할 수도 있습니다.크론.
답변2
예, 30초 동안 절전 모드를 유지하는 무한 루프가 필요합니다. 다음 스니펫이 수행됩니다.
#!/bin/bash
while true
do
# do any stuff you want
echo "doing my thing"
# sleep for 30 seconds
sleep 30
done
하지만 내 생각에 당신은 bash 스크립트에서 그것을 하는 것이 아마도 당신이 원하는 것이 아니라는 것을 곧 알게 될 것입니다. 이와 같은 작업에는 일반적으로 어떤 형태의 데몬이 필요합니다.
수정된 질문에 답하기 위해 예상대로 작동하는 스크립트 변형은 다음과 같습니다.
#!/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