Você pode usar um loop infinito no bash:
while true ; do
# Your code here.
sleep 30;
done
Você também pode agendar uma execução periódica do programa de verificação por cron .
Estou interessado em escrever um programa que obtenha o tamanho do arquivo de spool de correio para o usuário. (Os arquivos de spool encontrados em / var / spool / mail / $ USER no Linux). Para fazer isso, eu gostaria de criar um loop contínuo que excita uma vez a cada 30 segundos. Cada vez que o loop é executado, ele irá comparar o tamanho do arquivo de spool de email com seu tamanho do loop anterior. Se o novo tamanho for maior que o tamanho antigo, ele será impresso com uma mensagem dizendo "Você tem um novo e-mail".
Eu escrevi o script abaixo, mas não estou conseguindo fazê-lo funcionar. Alguém tem alguma sugestão para mim?
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 &
Você pode usar um loop infinito no bash:
while true ; do
# Your code here.
sleep 30;
done
Você também pode agendar uma execução periódica do programa de verificação por cron .
Sim, você precisa de um loop infinito com um sono de 30 segundos. O snippet a seguir será o seguinte:
#!/bin/bash
while true
do
# do any stuff you want
echo "doing my thing"
# sleep for 30 seconds
sleep 30
done
Mas eu acho que você logo descobrirá que fazer isso em um script bash provavelmente não é o que você quer fazer. Tarefas como essa geralmente exigem alguma forma de um daemon.
Para responder à sua pergunta modificada, aqui está uma variação do seu script que deve funcionar como esperado:
#!/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