用于检查具有count的目录中的文件的shell脚本

时间:2017-11-15 05:18:10

标签: unix

Iam尝试编写shell脚本来检查特定路径中的文件, 如果文件可用,那么我需要获得成功邮件,否则我需要收到失败的邮件。 但我的查询即使1个文件可用我收到成功邮件但每天我收到9个文件,即使1个文件不可用我需要收到失败的邮件请帮我写一个上述逻辑的脚本

cd /file path 
if [ -f $(date '+%Y%m%d') file name ]; then
echo "Hi Team,  Input Files have been received successfully" |  mailx -s "SUCCESS" -r "FILE_CHK" userid@doamin.com
else
echo "Hi Team,  Input Files have NOT been received . Please check" |  mailx -s "FAILED" -r "FILE_CHK" userid@doamin.com
fi
exit  

1 个答案:

答案 0 :(得分:0)

您需要检查所有文件是否存在,并且只有在这种情况下才发送成功的邮件。如果您只有一个文件,则应直接发送错误消息。

以下代码原型可以解决这个问题:

#!/bin/bash
files=( "file1" "file2" "file3" )
for i in "${files[@]}"
do
    echo "Checking if file: $i exists."
    if [ ! -f $i ]; then
        echo "Hi Team, Input File $i has NOT been received! Please check" |  mailx -s "FAILED" -r "FILE_CHK" userid@doamin.com
        exit 0;
    fi
done
echo "Hi Team, Input Files have been received successfully" |  mailx -s "SUCCESS" -r "FILE_CHK" userid@doamin.com

基本上你有一个你需要检查的文件列表,你检查元素它确实存在,如果列表中没有一个元素,那么你发送通过邮件发送失败通知并退出

当且仅当所有文件都存在时,您才会发送成功消息!!!

最后但并非最不重要的是,此脚本只是您需要适应特定需求的骨架(添加时间戳等)。