如果存在任一文件,则在bash shell脚本

时间:2016-06-20 16:37:45

标签: linux shell email unix

尝试模拟一个小的shell脚本..有一个已经存在的进程,它创建了两个文件中的一个(即file1或file2)。我的目标是能够根据创建的文件发送电子邮件警报。

例如,如果file1存在,则向John,David,Smith发送电子邮件,说明file1已创建。如果file2存在,则向同一组人员(John,David,Smith)发送电子邮件,说明file2已创建。

如果我写一个简单的if-else它会起作用,但我需要重复我试图避免的代码的某些部分。

#!/bin/bash
file="file1"
if [ -f "$file1" ]
    then
        send email to three people mentioned 
    else
        send email to three people mentioned saying file2 was created since it always creates two files 
    fi
}

这里我试图以更好的方式构建脚本,而且我不想重复“发送电子邮件...”命令三次,因为我可能需要在将来添加更多人进入列表。 / p>

请帮忙。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以创建一个功能块,将邮件发送到所需的人员列表。从任一案例中调用该函数

答案 1 :(得分:0)

这样的东西
#!/bin/bash

userlist="$HOME/myusers.cfg" # one user per line

function send_alert {
   while read -r user comment; do
      echo "my command to send to ${user}"
      echo "subject=$1"
      echo "Content=Hello ${comment}\n$2"
   done < "${userlist}"
}

file="file1"
if [ -f "$file1" ]; then
   send_alert "My subject" "Content: ${file1} exists."
else
   send_alert "My subject" "Content: ${file2} exists."
fi

我在myusers.cfg中添加了一个可选的字段注释,因此您可以在空格后添加一些注释(名称,某人)。
您可以调整send_alert以获取更多业务规则,例如每小时仅发送一次警报,仅在工作时间发送,但夜班人员除外。