我的代码是:
if [ "$server" == "a" ]; then
echo "apache"
fi
if [ "$server" == "t" ]
then
echo "tomcat"
else
echo "Entered"
fi
Run Code Online (Sandbox Code Playgroud)
价值$server
是t
.我希望将值tomcat
打印在控制台上.但是Entered
也被印刷了!
我对此感到困惑.为什么if
和else
语句都被执行了?
小智 5
如果前面的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
Run Code Online (Sandbox Code Playgroud)如果您仍然无法发现问题,请执行以下操作之一:
使用-x
标志执行脚本
bash -x <scriptname>
Run Code Online (Sandbox Code Playgroud)注释掉每一行...然后逐行注释,看看得到什么结果