centos 7 -eq:预期一元运营商

时间:2016-08-09 10:43:59

标签: bash shell command-line centos7

我必须检查Tomcat 8是否正在运行。为此,我使用下面的脚本。

#!/bin/bash

statuscode=$(wget --server-response http://localhost:8080 2>&1 | awk '/^  HTTP/{print $2}')

if [ $statuscode -eq 200 ]
then
    echo "TOMCAT OK"
    exit 0
else
    echo "TOMCAT CRITICAL"
    exit 2
fi

当我在CentOS 7上运行此脚本时。

如果Tomcat 8正在运行,则脚本正在运行而没有任何错误。

如果Tomcat 8停止,则脚本正在运行并出现以下错误

line 5: [: -eq: unary operator expected

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:2)

在将变量与预期输出进行比较之前,检查变量是否为空。

#!/bin/bash

statuscode=$(wget --server-response http://localhost:8080 2>&1 | awk '/^  HTTP/{print $2}')

if [ -n "$statuscode" ] && [ $statuscode -eq 200 ]
then
    echo "TOMCAT OK"
    exit 0
else
    echo "TOMCAT CRITICAL"
    exit 2
fi

答案 1 :(得分:0)

试试这个;

如果状态码为空则抛出-eq: unary operator expected

#!/bin/bash
{
statuscode=$(wget --server-response http://localhost:80 2>&1 | awk '/^  HTTP/{print $2}')

if [ -z "$statuscode" ]
then
echo "TOMCAT CRITICAL";
exit 2;
else  
  if [ $statuscode -eq 200 ]
    then
     echo "TOMCAT OK";
     exit 0;
  fi
fi
}