if [ $? -ne 0 ]; then
STATUS=$(cat $LOG.$i)
if [ $STATUS != "$i-DOWN!" ]; then
echo "$(date): ping failed, $i host is down!" |
mail -s "$(date) $i host is down!" $EMAIL
fi
echo "$(date) $i-DOWN!" > $LOG.$i
else
STATUS=$(cat $LOG.$i)
**------->>>**if [ $STATUS != "$i-UP!" ]; then
echo "$(date): ping OK, $i host is up!" |
mail -s "$(date) $i host is up!" $EMAIL
fi
echo "$(date) $i-UP!" > $LOG.$i
fi
我不断收到该特定行的错误“太多参数”,指向它的箭头..但我上面有完全相同的行并且没有得到错误......
这令人沮丧,任何人都知道为什么?
答案 0 :(得分:0)
我的猜测是$STATUS
包含空格,尝试用引号包装表达式:
if [ "$STATUS" != "$i-UP!" ]
上面的行未进行评估,因此无法触发错误。请注意,shell脚本不会被编译,只有在运行时到达时才会计算每一行。