我必须检查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
请帮我解决这个问题。
答案 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
}