意外标记'fi'附近的语法错误 - 高负载通知邮件

时间:2013-08-07 02:51:20

标签: bash shell syntax

我试图让服务器给我发电子邮件,如果负载超过15,但我不断收到以下错误。

root@echo [~]# sh load.sh
load.sh: line 9: syntax error near unexpected token `fi'
load.sh: line 9: `fi'

这是load.sh

#!/bin/bash
SUBJECT="`hostname`server load is high"
TO=myemail@gmail.com
uptime > /tmp/load
if [ `uptime | awk '{ print$11 }' | cut -d. -f1` -gt 1 ];
then
mail -s "$SUBJECT" $TO < /tmp/load
exit
fi

服务器uname -a

Linux 2.6.18-308.24.1.el5#1 SMP Tue Dec 4 17:43:34 EST 2012 x86_64 x86_64 x86_64 GNU / Linux

1 个答案:

答案 0 :(得分:0)

我并没有真正得到与您相同的错误,但您已经可以测试此解决方案了:

if [ `uptime | awk '{ print$11 }' | cut -d. -f1` -gt 1 ];

此条件尝试将float与整数进行比较。我会用an extended test command进行测试。如果你没有将then关键字放在与你的条件相同的行上,你就可以忘记分号:

if [[ `uptime | awk '{ print$11 }' | cut -d. -f1` > 1 ]]
then
   mail -s "$SUBJECT" $TO < /tmp/load
   exit
fi