Linux case语句总是给出相同的结果

时间:2013-11-06 16:01:57

标签: linux bash case

我正在尝试使用案例逻辑检查$ VERSION,但有一些问题。

$ VERSION可以是“由主持人拒绝连接”,“0,4,1,101 2013-05-18”,或其他一些版本“0,4,1,102 2013-09-18”

我似乎总是遇到“其他问题”而我的测试中$ VERSION是“0,4,1,101 2013-05-18”......

    #!/bin/bash

HOSTNAME=$1
VERSION=$(/usr/local/nagios/libexec/check_nrpe -H servername01 -c checkversion)
echo "$VERSION" >> /var/log/dig-nscp-install.log

NOW=$(date '+%Y-%m-%d -- %H:%M')
LOGFILE=/var/log/dig-nscp-install.log

#if [ "$TRVER" == "Connection refused by host" ]; then
#       echo  "$NOW : Version $VERSION already installed on HOSTNAME!" >> /var/log/dig-nscp-install.log
#else
#       echo  "$NOW : Powershell install script initiated to install version $VERSION on $HOSTNAME!" >> /var/log/dig-nscp-install.log
#       /usr/local/nagios/libexec/check_nrpe -H servername02 -t 300 -c install_nscp_0.4.101 -a $HOSTNAME
#
#fi

case $VERSION in
        "Connection refused by host")
                echo  "$NOW : Powershell script initiated to install version $VERSION on $HOSTNAME!" >> /var/log/dig-nscp-install.log
                ;;
        "0,4,1,101 2013-05-18")
                echo  "$NOW : Version $VERSION already installed on HOSTNAME!" >> /var/log/dig-nscp-install.log
                ;;
        *)
                echo "$NOW : Some other problem" >> /var/log/dig-nscp-install.log
                ;;

esac

2 个答案:

答案 0 :(得分:1)

我的猜测是@chepner在评论中提到的。你可以尝试类似的东西:

"Connection refused by host"*)< ==注意*

上述情况应该记录任何错误的回车或其他怪异。

如果CR 是设置VERSION的问题,您可以使用tr更改其分配,以消除不需要的字符:

VERSION=$(some command here|tr -d "\r")

答案 1 :(得分:0)

我运行了你的代码(用bash)并且它没有任何问题 它做了它应该做的完美:-)

必须在为“$ VERSION”赋值的代码中找到问题的原因。

如果您使用缺少的部分更新您的问题,那么我会尝试相应地更新我的答案。

更新:使用VERSION=$( echo "0,4,1,101 2013-05-18" )进行测试,效果非常好。

我无法运行您正在运行的nagios(?)程序,但可以确定它提供的输出与您预期的不同(我将进一步编写并相应地编辑此答案)。