如果条件不能用于bash

时间:2015-02-27 02:55:16

标签: shell

在下面的代码中,它直接转到其他条件而不是

#!/bin/bash
var=0
if [ "$var" -eq "0" ]
   then
   echo $var
else
   echo $var
fi

2 个答案:

答案 0 :(得分:0)

此代码可以明确地使用完全,但不做任何更改。

将它放在一个名为testscript的脚本中,并运行PS4=':$LINENO+' bash -x testscript(打印每个在它来自的源文件中的行号前面调用的命令),得到以下输出:< / p>

: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分支。

答案 1 :(得分:0)

#!/bin/bash
var=0
if [ "$var" -eq "0" ]
   then
   echo $var
   echo "Hello"
else
   echo $var
   echo "ELSE"
fi

将打印:0 Hello

  

意味着它只在循环中运行。检查一次