我不明白如何连续运行此脚本。它用于检查大小是否/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 &
答案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
,但这不是问题)