Shell 如果条件在bash中不起作用
在下面的代码中,它直接进入else条件,而不是ifShell 如果条件在bash中不起作用,shell,Shell,在下面的代码中,它直接进入else条件,而不是if #!/bin/bash var=0 if [ "$var" -eq "0" ] then echo $var else echo $var fi 此代码可以证明其工作原理与给定的一致,没有任何更改 将其放入名为testscript的脚本中,并运行PS4=':$LINENO+'bash-x testscript(要打印源文件中以行号开头调用的每个命令),将获得以下输出: :2+var=0 :3+'[' 0 -eq 0 ']'
#!/bin/bash
var=0
if [ "$var" -eq "0" ]
then
echo $var
else
echo $var
fi
此代码可以证明其工作原理与给定的一致,没有任何更改 将其放入名为
testscript
的脚本中,并运行PS4=':$LINENO+'bash-x testscript
(要打印源文件中以行号开头调用的每个命令),将获得以下输出:
:2+var=0
:3+'[' 0 -eq 0 ']'
:5+echo 0
0
现在,让我们对照原始源文件中的行号,查看该跟踪中的行号:
#!/bin/bash # line 1
var=0 # line 2 -- :2+var=3
if [ "$var" -eq "0" ] # line 3 -- :3+'[' 0 -eq 0 ']'
then # line 4
echo $var # line 5 -- :5+echo 0
else # line 6
echo $var # line 7
fi
…事实上,我们按顺序进入第2行、第3行和第5行,这意味着我们实际上采用了真理分支,而不是else
分支
#!/bin/bash
var=0
if [ "$var" -eq "0" ]
then
echo $var
echo "Hello"
else
echo $var
echo "ELSE"
fi
它将打印:0您好
意味着它只在循环时运行。检查一下
你的代码看起来很好。。。除了
if
和else
条件具有相同的结果之外。你怎么能分辨出它们之间的区别呢?除了@eigenchris提到的输出问题,你展示的代码工作得很好。