在linux上使用sh我希望将多个if语句的结果输出到邮件消息中。
#snap server1
running=`ps -U server1 | wc -l`
if [ $running -eq 1 ]; then
/root/zfsnap/zfSnap.sh -v -a 30d tank/server1
fi
#snap server2
running=`ps -U server2 | wc -l`
if [ $running -eq 1 ]; then
/root/zfsnap/zfSnap.sh -v -a 30d tank/server2
fi
sleep 3 && echo "results of script" | mail -s "snapshot status" administrator@domain.local
## current output is
[root@backupserver ~]# ./backup_script_daily.sh
/sbin/zfs snapshot tank/server1@2013-08-26_12.28.22--30d ... DONE
/sbin/zfs snapshot tank/server2@2013-08-26_12.28.22--30d ... DONE
我不确定如何为多个if语句执行此操作。我已经看过很多关于个人if语句的讨论。实际上我在这个脚本中还有大约8个(用户/服务器)。多年来我的脚本编写经验非常低:)。使用像Perl
这样的东西会更好吗?put servers into array
for each server in array
run command > to text file
end and mail(textfile)
我感谢任何建议或想法,对于帖子的任何问题,我深表歉意。这是我的第一个。
亲切的问候,
~Jon R。
答案 0 :(得分:0)
您可以将要捕获其输出的所有命令括在{ }
块中,并将整个命令输入mail
命令,例如:
#!/bin/bash
{
for server in server{1..2}; do
if (( $(pgrep -U "${server}" 2>/dev/null | wc -l) > 0 )); then
/root/zfsnap/zfSnap.sh -v -a 30d "tank/${server}"
fi
done
} | mail -s "snapshot status" administrator@domain.local