为什么两者if和else执行? [关闭](Why is both the if and else

2019-10-17 08:12发布

我的代码是:

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

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

该值$servert 。 我所期望的价值tomcat控制台上打印。 但Entered印呢!

我很困惑这个问题。 无论是怎么来的ifelse语句执行?

Answer 1:

else分支应该永远只能当执行if语句评估为假前。 有没有真正的任何例外情形规则,我所知道的。 有可能是别的东西腥在造成问题的bash的文件回事。

确保bash的是什么是执行脚本。 #!/bin/bash应该是在第一线。



Answer 2:

为了解决你的问题,做这样的事情:

  • 把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> 
  • 注释掉每行...然后在逐行评论,看看有什么结果你



文章来源: Why is both the if and else executed? [closed]