bash while while循环不会停止

时间:2013-03-22 16:37:05

标签: bash loops while-loop

我得到了这个简单的脚本,假设要创建一堆帐号,它应该包含两个值:起始帐号和要创建的帐号。我们去的时候增加帐号。例如:

./ pre_v_test.sh 123 3 应该给出

123

124

125

现在就这样做,只有一个问题:它完成后无法停止。 结果看起来更像是这样:

....
Writing subsriber: 102145
lalala
Writing subsriber: 102145
lalala
Writing subsriber: 102145
lalala
....

你明白了。

以下是代码:

#!/bin/bash

i_loop="0"
while [ $i_loop -lt $2 ]
do

i_subscriber=`expr $1 + $i_loop`

echo Writing subsriber: $i_subscriber

#actual account details here, not relevent to the question 

echo "lalala"
done

我在这里看了一个while循环的例子(http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html)但是对于我的生活,我无法发现差异,是什么让他的工作和我的失败?此外,截至两个月前,这个脚本正在运行。和现在唯一的区别是,它最后一次是在真正的SUSE上,而这次它是在vmware上的SUSE上。

谢谢大家 戴维

2 个答案:

答案 0 :(得分:2)

您没有增加变量:

#!/bin/bash

i_loop=0

while [ $i_loop -lt $2 ]
do

i_subscriber=`expr $1 + $i_loop`

echo Writing subsriber: $i_subscriber

i_loop=`expr $i_loop + 1`

done

答案 1 :(得分:1)

根本原因是你的变量$ i_loop将永远= 0,总是小于$ 2 你需要添加

let i_loop=$i_loop + 1 

somwhere在循环内。