Quando você fechar a janela do terminal, seu script será interrompido após um tempo limite. Com nohup .. & seu script será executado até que esteja pronto. Isso deve fazer o truque;
nohup yourscript.sh &
https://en.wikipedia.org/wiki/Nohup
Não estou entendendo como executar esse script continuamente. Ele é usado para verificar se o tamanho de /var/spool/mail
fica maior e mostrará uma saída de "Você tem e-mail".
Posso executá-lo, só não sei como fazê-lo funcionar sem parar.
#!/bin/bash
filename=/var/spool/mail/will
filesize="$(du -b "$filename")"
filesizeold="${filesize//[!0-9]/}"
echo $filesizeold
sleep 10;
filename=/var/spool/mail/will
filesize="$(du -b "$filename")"
filesizenew="${filesize//[!0-9]/}"
echo $filesizenew
for (( ;; ))
do
if [ $filesizeold -ne $filesizenew ];
then
break
fi
done
echo "$USER, You have mail"
Quando você fechar a janela do terminal, seu script será interrompido após um tempo limite. Com nohup .. & seu script será executado até que esteja pronto. Isso deve fazer o truque;
nohup yourscript.sh &
https://en.wikipedia.org/wiki/Nohup
O problema é que, quando você insere o loop, os dois tamanhos de arquivo não são alterados, ou você sai do loop imediatamente ou faz um loop indefinidamente. Seu código deve ser mais parecido com (aviso: não testado):
filename=/var/spool/mail/$USER
filesizeold=$(du -b "$filename")
echo "Filesizeold: $filesizeold"
while true
do
filesizenew=$(du -b "$filename")
echo "Filesizenew: $filesizenew"
if [ $filesizeold -ne $filesizenew ];
then
break
fi
echo "Still same size, sleeping and looping"
sleep 10
done
echo "$USER, You have mail"
(substituiu seu for
por umwhile
mais comum, mas esse não foi o problema)