我试图构建一个脚本来监控我的FTP站点中文件的任何修改。脚本如下。我用wc -l
计算了数字。目录中的文件并定义了文件的常量值,如果文件中有任何修改,如果我的同事在我的FTP中更新,这将向我发送通知。我试图通过这个来实现。但是这个脚本实际上只是在计数之后挂起。它没有给我预期的结果。代码有什么问题吗?我只是Bash的初学者,任何人都可以帮我解决这个问题
#!/usr/bin/bash
curl ftp://Sterst:abh89TbuOc@############################/Test/| wc -l ;
read b;
a=9
if [ "$b" != "$a" ];
then
echo "FTP dir has modified mail" -s "dir notification" sni912@######.com;
fi
答案 0 :(得分:1)
关于您的代码的几点说明:
#!/usr/bin/bash
curl ftp://Sterst:abh89TbuOc@############################/Test/| wc -l ;
read b;
这不符合您的想法:wc
输出转到stdout,而不是read
命令。请改为:b=$( curl ... | wc -l )
a=9
if [ "$b" != "$a" ];
由于wc
输出会有一些额外的空格,因此最好进行数字比较:
if (( a != b ))
then
echo "FTP dir has modified mail" -s "dir notification" sni912@######.com;
你可能是这个意思:
echo "FTP dir has modified" | mail -s "dir notification" sni912@######.com;
我会这样写:
listing=$( curl ftp://... )
num=$( echo "$listing" | wc -l )
if (( num != 9 )); then
mail -s "ftp dir modification" email@example.com <<END
FTP directory modification
$listing
END
fi
答案 1 :(得分:0)
我的代码
#!/usr/local/bin/bash
listing=$( curl ftp://username:password@ftp.com/test/ )
num=$( wc -l | echo "$listing" )
if (( num != 9 ));
then
mail -s "ftp dir modification" email@example.com
fi `