【发布时间】:2016-12-15 08:55:51
【问题描述】:
我必须检查 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: 应为一元运算符
我该如何解决这个问题?
【问题讨论】:
-
这是因为
$statuscode填充了一个空字符串或一些奇怪的东西。尝试在if条件之前通过echoing 变量进行调试。 -
@fedorqui 是,当 tomcat 停止时 $statuscode 为空。我该如何处理?
-
之前可以添加一个空变量检查。
-
如果你引用正确(
[ "$statuscode" -eq 200 ]),你会得到一个更有用的错误;在将这些参数传递给[命令(又名测试)之前,缺少引号导致shell 将您的变量字符串拆分为未知数量的参数(在本例中为0)。
标签: bash shell command-line centos7