[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[linux-users:96157] Re: [bash]whileループ内変数値の扱いについて教えてください。


関根です。

Kenichi Nagai <nagai _at_ cp.star-micronics.co.jp> wrote
> 次のブロックでは、catコマンド結果をwhileループに渡しています。
> ループ中のcnt表示は、問題なくインクリメントされているのですが、
> ループを抜けた後のcnt表示が、ループに入る前の値"0"に戻ってしまって
> います。こちらのループを抜けた後にcnt値として"22"を保持するためには
> どの様にすればよいのでしょうか?
(snip)
> 	#block2
> 	cnt=0
> 	cat $0 | while read LINE
> 	do
> 	  echo "$cnt: $LINE"
> 	  cnt=`expr $cnt + 1`
> 	done
> 	echo "cnt(after LOOP) = $cnt"


  cat $0 | while read LINE

を

  exec < $0
  while read LINE

に変えるとうまくいきます。

理由を私が説明すると間違えちゃうかもしれないので、
正しい説明は識者にまかせます。

この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
References: