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
答案 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
基本上你有一个你需要检查的文件列表,你检查元素它确实存在,如果列表中没有一个元素,那么你发送通过邮件发送失败通知并退出。
当且仅当所有文件都存在时,您才会发送成功消息!!!
最后但并非最不重要的是,此脚本只是您需要适应特定需求的骨架(添加时间戳等)。