1

我的代码是:

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

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

$server值为t。我希望将值tomcat打印在控制台上。但是Entered也印出来了!

我对此感到困惑。ifelse语句是怎么执行的?

4

2 回答 2

5

只有在前面的 if 语句计算结果为 false 时,才应该执行 else 分支。据我所知,该规则实际上没有任何例外。导致问题的 bash 文件中可能还有其他可疑的地方。

确保 bash 是执行脚本的内容。#!/bin/bash应该在第一行。

于 2012-10-20T08:18:56.523 回答
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>
    
  • 注释掉每一行...然后逐行注释,看看你得到什么结果

于 2012-10-20T10:00:44.253 回答