如何连续循环运行脚本

如何连续循环运行脚本

我不明白如何连续运行此脚本。它用于检查大小是否/var/spool/mail变大,并显示“您有邮件”的输出。

我可以让它运行,我只是不知道如何让它不停止地运行。

#!/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"

答案1

当您关闭终端窗口时,您的脚本将在超时后停止。使用 nohup .. & 您的脚本将运行直到准备就绪。这应该可以解决问题;

nohup yourscript.sh & 

https://en.wikipedia.org/wiki/Nohup

答案2

问题是,一旦进入循环,两个文件大小就不会改变,因此要么立即退出循环,要么无限循环。您的代码应该更像(警告:未经测试):

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"

for用更常见的替换了你的while,但这不是问题)

相关内容