令人沮丧这个if语句中有多少参数

时间:2015-02-28 12:36:02

标签: if-statement

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

我不断收到该特定行的错误“太多参数”,指向它的箭头..但我上面有完全相同的行并且没有得到错误......

这令人沮丧,任何人都知道为什么?

1 个答案:

答案 0 :(得分:0)

我的猜测是$STATUS包含空格,尝试用引号包装表达式:

if [ "$STATUS" != "$i-UP!" ]

上面的行未进行评估,因此无法触发错误。请注意,shell脚本不会被编译,只有在运行时到达时才会计算每一行。