为什么if和else都被执行了?

时间:2012-10-20 08:07:36

标签: bash shell ubuntu

我的代码是:

if [ "$server" == "a" ]; then
        echo "apache"
fi

if [ "$server" ==  "t"   ]
then
        echo "tomcat"
else
        echo "Entered"
fi

$server的值为t。我希望在控制台上打印值tomcat。但也打印Entered

我对此感到困惑。为什么ifelse语句都被执行了?

2 个答案:

答案 0 :(得分:5)

如果前面的if语句的计算结果为false,那么else分支应该只执行。我所知道的那条规则并没有任何例外。

可能会在bash文件中发生其他问题

确保bash正在执行脚本。 #!/bin/bash应位于第一行。

答案 1 :(得分:4)

要解决您的问题,请执行以下操作:

  • 将echo语句放入每个分支:

    if [ "$server" == "a" ]; then
        echo "in branch apache"
        echo "apache"
    fi
    
    if [ "$server" ==  "t"   ]
    then
            echo "in branch tomact"
            echo "tomcat"
    else
            echo "in else branch"
            echo "Entered"
    fi
    

如果您仍然无法发现问题,请执行以下操作之一:

  • 使用-x标志

    执行脚本
    bash -x <scriptname>
    
  • 注释掉每一行...然后逐行评论,看看你得到了什么结果