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年代作出的设计决定,不需要使它比现状更糟,即使在它的标准的地方!)