我正在尝试创建一个用于结冰的事件处理程序。我的 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!"
...
Run Code Online (Sandbox Code Playgroud)
当我在顶部没有 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
Run Code Online (Sandbox Code Playgroud)
所以你的test声明应该是:
if [ "$4" -gt 0 ];
Run Code Online (Sandbox Code Playgroud)
此外,您的if声明缺少,then因此应更正为:
if [ "$4" -gt 0 ]; then
Run Code Online (Sandbox Code Playgroud)
查看man test更多test选项。