我的代码是:
if [ "$server" == "a" ]; then
echo "apache"
fi
if [ "$server" == "t" ]
then
echo "tomcat"
else
echo "Entered"
fi
的$server
值为t
。我希望将值tomcat
打印在控制台上。但是Entered
也印出来了!
我对此感到困惑。if
和else
语句是怎么执行的?
只有在前面的 if 语句计算结果为 false 时,才应该执行 else 分支。据我所知,该规则实际上没有任何例外。导致问题的 bash 文件中可能还有其他可疑的地方。
确保 bash 是执行脚本的内容。#!/bin/bash
应该在第一行。
要解决您的问题,请执行以下操作:
将 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>
注释掉每一行...然后逐行注释,看看你得到什么结果