for(int i = 0; i < n;i++){
.....;
}
であるが,たまにシェルスクリプトを書いているときに同じように書こうとしても,for文を使うとなかなかうまくいかない.
というわけで,シェルスクリプトで繰り返しを書くときは,while文を使って次のように書いている.
loop=10;#繰り返し回数要はexprコマンドを使って数値の計算と比較を行う.ちなみに,break文が入っているif文の条件を
i=0;
while true
do
...;
i=`expr $i + 1`
if `expr $i \>= $loop`
then
break;
fi
done
if [ $i > $loop ]
とすると多分うまくいかない.
というのは,man testすると<, >の記号は文字列としてASCIIコード順での順位で比較すると書いているためで,もし数値比較したいのであれば-gt, -ltを使うように書いてある.
そんなわけで,シェルスクリプトで数値比較をするときにはexprを使うと覚えておけばとりあえず間違いは無いということだろう.
0 件のコメント:
コメントを投稿