我正在尝试为结冰创建事件处理程序。我的Bash脚本现在看起来像这样:
#!/bin/bash
# Event Handler for loggin out inactive RDP users
# $1 is $SERVICESTATE$ (OK WARNING UNKNOWN CRITICAL)
# $2 is $SERVICESTATETYPE$ (SOFT HARD)
# $3 is $SERVICEATTEMPT$ (1 through 4)
# $4 is $SERVICDOWNTIME$ (0 no Downtime, >0 Downtime active)
# $5 is SRV29
# $6 is $host.name$ (1 through 4)
if [ "$4" > 0 ];
echo "in downtime, exit";
then exit
fi
case "$1" in
OK)
echo "ok!"
;;
WARNING)
echo "warning!"
;;
UNKNOWN)
echo "unknown!"
;;
CRITICAL)
echo "critical!"
...
当我在顶部没有if语句的情况下执行此脚本时,一切正常。但是我想检查$ 4是否大于0。此测试条件始终返回true,无论我在此条件内输入什么内容,始终会导致“停机,退出”。
因此,即使if [ "hello" = "hallo" ]
它会进入内部并立即退出。我还尝试了几乎所有带引号的变体,不带双括号...等等。我显然做错了。谁能发现它?
提前致谢!
为了测试整数,您将要使用:
-eq #Is equal
-ne #Is not equal
-lt #Less than
-le #Less than or equal
-gt #Greater than
-ge #Greater than or equal
因此,您的test
声明应为:
if [ "$4" -gt 0 ];
此外,您的if
声明缺少,then
因此应更正为:
if [ "$4" -gt 0 ]; then
请参阅man test
以获取更多test
选项。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句