我的代码是:
if [ "$server" == "a" ]; then
echo "apache"
fi
if [ "$server" == "t" ]
then
echo "tomcat"
else
echo "Entered"
fi
$server
的值为t
。我希望在控制台上打印值tomcat
。但也打印Entered
!
我对此感到困惑。为什么if
和else
语句都被执行了?
答案 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>
注释掉每一行...然后逐行评论,看看你得到了什么结果