我想每 60 秒查找一个文件。如果该文件在该时间范围内存在,则应触发电子邮件。我在下面尝试过但不起作用。感谢您的帮助!谢谢提前
#!/bin/sh
cd /my/path
while true
do
set Hrs = `date "+H"`
if [ $Hrs >= 17 ] && [$Hrs <=23 ]; then
$filefound = `ls tt.txt`
if [ $filefound = "tt.txt" ]; then
mailx send email......
fi
fi
sleep 5
done
答案1
尝试下面的代码。
#!/bin/sh
cd /my/path
while true; do
Hrs=`date "+%H"`
if [ "$Hrs" -ge 17 ] && [ "$Hrs" -le 23 ]; then
if [ -f tt.txt ]; then
echo "File Found" | mail -s "This is the subject" <email address>
fi
fi
sleep 60
done
我已经测试了除邮件部分之外的整个脚本。其他一切都可以,我希望邮件也可以。干杯。
答案2
有一个精确的测试(在所有 shell 中)来查看文件是否存在、是否是真实文件、是否可读等。应避免使用 ls。
.. 每次文件不存在时,它都会发送一条错误消息。
..它每次都运行一个外部进程。
..这还将检测目录、命名管道、设备等。
如果您要发送电子邮件,您也可以包含找到的文件名。
最好将文件名声明一次作为 shell 变量。最好将其作为脚本的参数,这样它就可以用于不同的文件而无需更改。
睡眠 5 与睡眠 60 不同。