2009年1月29日木曜日

[UNIX]: シェルスクリプトで指定回数の繰り返し処理

普段プログラミングしていて,指定回数繰り返す処理といったら

for(int i = 0; i < n;i++){
.....;
}


であるが,たまにシェルスクリプトを書いているときに同じように書こうとしても,for文を使うとなかなかうまくいかない.
というわけで,シェルスクリプトで繰り返しを書くときは,while文を使って次のように書いている.

loop=10;#繰り返し回数
i=0;
while true
  do
  ...;
  i=`expr $i + 1`
  if `expr $i \>= $loop`
    then
    break;
  fi
done
要はexprコマンドを使って数値の計算と比較を行う.ちなみに,break文が入っているif文の条件を
if [ $i > $loop ]

とすると多分うまくいかない.
というのは,man testすると<, >の記号は文字列としてASCIIコード順での順位で比較すると書いているためで,もし数値比較したいのであれば-gt, -ltを使うように書いてある.

そんなわけで,シェルスクリプトで数値比較をするときにはexprを使うと覚えておけばとりあえず間違いは無いということだろう.

0 件のコメント:

コメントを投稿