Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本。带有整数比较的While循环从不存在_Bash - Fatal编程技术网

Bash脚本。带有整数比较的While循环从不存在

Bash脚本。带有整数比较的While循环从不存在,bash,Bash,我已经编写了下面的示例来演示 以下操作不起作用: #! /bin/bash n=1 m=2 while (( n < m )) echo "$n $m" (( n=n+1 )) do continue done #/bin/bash n=1 m=2 而((n

我已经编写了下面的示例来演示

以下操作不起作用:

#! /bin/bash

n=1 m=2

while (( n < m ))
    echo "$n $m"
    (( n=n+1 ))
do
    continue
done
#/bin/bash
n=1 m=2
而((n
以下方法确实有效:

#! /bin/bash

n=1 m=2

while true
    echo "$n $m"
    (( n=n+1 ))
do
    if (( n < m ))
    then
        continue
    else
        break
    fi
done
#/bin/bash
n=1 m=2
虽然是真的
echo“$n$m”
((n=n+1))
做
如果((n
我理解为什么第二种形式有效。我不明白为什么第一种形式不起作用


我写这些脚本时认为它们是等效的。(产生相同的输出。)但是第一个循环无限远!为什么会发生这种情况?

首先,快速查看文档:

$help同时
while:while命令;执行命令;完成
展开并执行命令,只要
`“while”命令的退出状态为零。
请注意确切的文本:
命令中的最后一个命令,而
命令是退出状态计数的命令。我们稍后再讨论这个问题


在原始代码中:

while (( n < m ))
    echo "$n $m"
    (( n=n+1 ))
do
    continue
done
…当然,这有一些不同的行为(如果比较失败,则不会“回声”)


相反,请考虑:

while (( n < m )); do
  echo "$n $m"
  (( n++ ))
done
while((n
首先,快速查看文档:

$help同时
while:while命令;执行命令;完成
展开并执行命令,只要
`“while”命令的退出状态为零。
请注意确切的文本:
命令中的最后一个命令,而
命令是退出状态计数的命令。我们稍后再讨论这个问题


在原始代码中:

while (( n < m ))
    echo "$n $m"
    (( n=n+1 ))
do
    continue
done
…当然,这有一些不同的行为(如果比较失败,则不会“回声”)


相反,请考虑:

while (( n < m )); do
  echo "$n $m"
  (( n++ ))
done
while((n
bash的疯狂-谢谢,这很好地解决了问题@user3728501,如果你写了
while(它不一定是好的或坏的语言设计。我只是不理解语法。误解语法!=草率的编码。对不起,我们这里有很多关于语法的抱怨,我读了“疯狂”评论是一个。有很多可怕的POSIX兼容的外壳,往往是从70年代作出的设计决定,不需要使它比现状更糟,即使在它的标准位置!):BASH的疯狂-谢谢这清楚地搞定了!user3728501,如果你写了
while(它不一定是好的或坏的语言设计。我只是不理解语法。误解语法!=草率的编码。对不起,我们这里有很多关于语法的抱怨,我读了“疯狂”评论是一个。有很多可怕的POSIX兼容的外壳,往往是从70年代作出的设计决定,不需要使它比现状更糟,即使在它的标准的地方!)