2

一連のアカウント番号を作成することを想定したこの単純なスクリプトを取得しました。このスクリプトは、開始アカウント番号と作成するアカウント数の2つの値を受け取る必要があります。アカウント番号を増やしていきます。したがって、たとえば:

./pre_v_test.sh1233は与える必要があります

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)を調べましたが、私の人生では違いを見つけることができません。仕事と私の失敗?また、2か月前の時点で、このスクリプトは機能していました。と現在の唯一の違いは、前回は実際のSUSEにあり、今回はvmwareのSUSEにあることです。

みんなありがとうデイビー

4

2 に答える 2

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
于 2013-03-22T16:45:37.103 に答える
1

根本的な原因は、変数$i_loopがforever= 0になることです。これは、常に$2未満です。
追加する必要があります

let i_loop=$i_loop + 1 

ループ内のどこか。

于 2013-03-22T16:47:40.793 に答える