为什么while和do之间的共同回声线在bash中创建一个死循环?

时间:2018-06-19 04:48:54

标签: bash

while循环将执行3次。

i=0
while [[ $i -lt 3 ]]
do
    echo "haha"
    ((i++))
done

输出:

haha
haha
haha

让我在while和do之间添加一行echo "i am here"

i=0
while [[ $i -lt 3 ]]
echo "i am here"
do
    echo "haha"
    ((i++))
done

为什么它变成死循环,永不停止,输出

i am here
haha

永远?

1 个答案:

答案 0 :(得分:1)

查看--help上的while bash。

bash.exe"-3.1$ help while
while: while COMMANDS; do COMMANDS; done
     Expand and execute COMMANDS as long as the final command in the
    `while' COMMANDS has an exit status of zero.

您案例中while的最终命令是

echo "i am here"

它将始终成功执行,因为它不会失败 在这种情况下,退出状态为零 - 始终。

比较https://www.gnu.org/software/bash/manual/html_node/Exit-Status.html

  

出于shell的目的,退出状态为零的命令已成功。

所以你编写了一个无限循环。