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

sri*_*ram 1 bash shell ubuntu

我的代码是:

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

if [ "$server" ==  "t"   ]
then
        echo "tomcat"
else
        echo "Entered"
fi
Run Code Online (Sandbox Code Playgroud)

价值$servert.我希望将值tomcat打印在控制台上.但是Entered也被印刷了!

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

小智 5

如果前面的if语句的计算结果为false,则else分支应该只执行.我所知道的那条规则并没有任何例外.bash文件中可能还有其他可疑因素导致问题.

确保bash正在执行脚本.#!/bin/bash应该在第一行.


hel*_*hod 5

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

  • 将 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
    
    Run Code Online (Sandbox Code Playgroud)

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