2013-03-22 184 views
2

我得到了这个简单的脚本,假设创建了一堆帐号,它应该有两个值:开始帐号和创建多少个帐号。随着我们去增加帐号。因此,例如:bash while循环不会自行停止

./pre_v_test.sh 123 3 应该给

现在它这样做,只有一个问题:它可以完成后不会停止。 结果看起来更像这样:

.... 
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 

我经过这里(http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_02.html)while循环的这个例子看,但对我的生活,我不能看出其中的区别,是什么让他的工作和我的失败?另外,截至两个月前,这个脚本正在起作用。现在和现在唯一的区别在于上一次是在真正的SUSE上,而这次是在vmware上的SUSE上。

谢谢大家 戴维

+4

你并没有增加'$ i_loop' – jordanm 2013-03-22 16:42:33

回答

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 
+0

那么这很尴尬......谢谢 – 2013-03-22 16:57:32

1

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

let i_loop=$i_loop + 1 

somwhere内循环。