2013-03-22 187 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內循環。