我必须检查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被停止,那么脚本运行时会出现以下错误
第5行:[:-eq:期望的一元运算符
我怎样才能解决这个问题?
发布于 2016-08-09 10:53:32
在将变量与预期输出进行比较之前,检查变量是否为空。
#!/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发布于 2016-08-09 10:54:26
试试这个:
如果状态代码为空,则抛出-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
}https://stackoverflow.com/questions/38848577
复制相似问题