关于SHELL脚本循环的问题

2013-06-22 14:03:09 +08:00
 gouera
刚学shell脚本,在书上看到这里的时候有点小疑问。
#!/bin/bash

aa=0
while echo "while iteration: $aa "
[ $aa -lt 15 ]
do
if [ $aa -gt 5 ] && [ $aa -lt 10 ]
then
continue
fi
echo " inside iteration number: $aa"
aa=$[ $aa + 1 ]
done

运行这个脚本会出现这样的结果:
[root@test ~]# . a.sh |more
while iteration: 0
inside iteration number: 0
while iteration: 1
inside iteration number: 1
while iteration: 2
inside iteration number: 2
while iteration: 3
inside iteration number: 3
while iteration: 4
inside iteration number: 4
while iteration: 5
inside iteration number: 5
while iteration: 6
while iteration: 6
while iteration: 6
while iteration: 6
while iteration: 6
while iteration: 6
while iteration: 6
while iteration: 6
while iteration: 6


我想知道,为什么6这里过不去呢。
2792 次点击
所在节点    Linux
2 条回复
rse43
2013-06-22 14:06:00 +08:00
if [ $aa -gt 5 ]
gouera
2013-06-22 14:10:23 +08:00
啊,我知道为什么了,
当$aa=6的时候,
刚好满足 [ $aa -gt 5 ] && [ $aa -lt 10 ] 这条语句, 然后这个循环又跳到开头去了。 然后因为没有结束的条件。所以就一直这样死循环了。
本来一直想不通的,现在仔细分析一下,就通了。哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/73235

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX