Bash 为什么同时执行if和else?
我的代码是:Bash 为什么同时执行if和else?,bash,shell,ubuntu,Bash,Shell,Ubuntu,我的代码是: if [ "$server" == "a" ]; then echo "apache" fi if [ "$server" == "t" ] then echo "tomcat" else echo "Entered" fi $server的值为t。我希望在控制台上打印值tomcat。但是输入的也会打印出来 我对此感到困惑。为什么执行了if和else语句?只有在前面的if语句计算结果为false时,else分支才应该执行。据
if [ "$server" == "a" ]; then
echo "apache"
fi
if [ "$server" == "t" ]
then
echo "tomcat"
else
echo "Entered"
fi
$server
的值为t
。我希望在控制台上打印值tomcat
。但是输入的也会打印出来
我对此感到困惑。为什么执行了if
和else
语句?只有在前面的if语句计算结果为false时,else分支才应该执行。据我所知,这条规则没有任何例外。bash文件中可能还有其他可疑的东西导致了这个问题
确保bash是执行脚本的对象<代码>#/bin/bash应位于第一行。只有在前面的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>
bash-x
- 注释掉每一行。。。然后逐行评论,看看你得到了什么结果
要解决您的问题,请执行以下操作:
- 将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>
bash-x
- 注释掉每一行。。。然后逐行评论,看看你得到了什么结果
对我有用。您确定
bash
正在解释脚本吗?如果您看到输入的,它一定来自脚本中的另一行,或者您将server
值更改后循环到此语句……如果您使用[“$server”-eq“t”]
?非常确定-eq
仅用于整数比较。您是否尝试过[“X$server”=“Xt”]
对我有效。您确定bash
正在解释脚本吗?如果您看到输入的,它一定来自脚本中的另一行,或者您将server
值更改后循环到此语句……如果您使用[“$server”-eq“t”]
?非常确定-eq
仅用于整数比较。您尝试过[“X$server”=“Xt”]