我的代码是:
if [ "$server" == "a" ]; then
echo "apache"
fi
if [ "$server" == "t" ]
then
echo "tomcat"
else
echo "Entered"
fi
$server
的值是t
。我希望将值tomcat
打印在控制台上。但是Entered
也打印了!
我对此感到困惑。if
和else
语句如何执行?
else分支只能在先前的语句评估为false时执行。我知道的那个规则并没有任何例外。bash档案中可能还有其他可疑的事情引起了问题。
确保bash是执行脚本的内容。#!/bin/bash
应该在第一行。
解决您的问题,做类似的事情:
-
将回声语句放入每个分支:
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
flagbash -x <scriptname>
-
评论每一行...然后按行排列评论,看看您获得的结果