次のページ 前のページ 目次へ

7. for, while, until によるループ

この章では、for, while, そして util によるルー プについて述べます。 bashfor は、他の言語での使い方と若干異なります。基本的に は、ある文字列内の単語をあたまから順に反復処理するものです。

while は、制御式が真の間はコードを実行していて、偽になったとき (あるいは実行コード内に break が明示されている場合)にのみ停止します。

until ループは、制御式が偽と評価されている間はコードが実行される という点を除くと、while ループとほぼ同じです。whileuntil が似ていると思ったなら、それは正しい考えです。

7.1 For のサンプル

        #!/bin/bash
        for i in $( ls ); do
            echo item: $i
        done
        

二行目で、変数 i が宣言されています。これには、$( ls ) によっ て出力される様々な値が(順番に)代入されていきます。 三行目は、必要であればもっと長くできます。すなわち、四行目の done の前に複数の行が存在してもかまいません。 四行目の done は、変数 $i の値を使用していたコードがそこで 終了したことを示していています。したがって、$i に新しい値を代入する ことが可能です。 上記は、はほとんど意味がないスクリプトです。for ループを使用するもっと 有益な方法は、以前の例題にあったように、ある種のファイルだけを選択的に処理す る場合に使うことだと思います。

7.2 C 言語に似た for

Fiesh さんから以下のような形式のループを付け加えたらどうかと言われました。 この for ループは、C 言語や Perl の for ループに類似した 使われかたをしています。

        #!/bin/bash
        for i in `seq 1 10`;
        do
                echo $i
        done    
        

7.3 while のサンプル

        #!/bin/bash 
        COUNTER=0
        while [  $COUNTER -lt 10 ]; do
            echo The counter is $COUNTER
            let COUNTER=COUNTER+1 
        done
        

上記のスクリプトは、(C, Pascal, Perl といった)有名な言語の for の 制御構造を真似たものです。

7.4 until のサンプル

        #!/bin/bash 
        COUNTER=20
        until [  $COUNTER -lt 10 ]; do
            echo COUNTER $COUNTER
            let COUNTER-=1
        done
        


次のページ 前のページ 目次へ