Unix / Linux – シェルループの種類

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------

この章では、Unixにおけるシェルループについて説明します。ループは、一連のコマンドを繰り返し実行できる強力なプログラミングツールです。この章では、シェルプログラマが利用できる以下のタイプのループについて検討します。

  • whileループ
  • #!/bin/sh
    
    a=0
    
    while [ $a -lt 10 ]
    do
       echo $a
       a=`expr $a + 1`
    done

    実行時には、次の結果が表示されます。

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
  • forループ
  • #!/bin/sh
    
    for var in 0 1 2 3 4 5 6 7 8 9
    do
       echo $var
    done

    実行時には、次の結果が表示されます。

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
  • untilループ
  • #!/bin/sh
    
    a=0
    
    until [ ! $a -lt 10 ]
    do
       echo $a
       a = `expr $a + 1`
    done

    実行時には、次の結果が表示されます。

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
  • selectループ
  • #!/bin/ksh
    
    select DRINK in mint cofee water juice appe all none
    do
       case $DRINK in
          mint|cofee|water|all) 
             echo "飲めます"
             ;;
          juice|appe)
             echo "家にあります"
          ;;
          none) 
             break 
          ;;
          *) echo "ERROR: 未選択" 
          ;;
       esac
    done

    selectループで表示されるメニューは次のようになります。

    $./test.sh
    1) tea
    2) cofee
    3) water
    4) juice
    5) appe
    6) all
    7) none
    #? juice
    家にあります
    #? none
    $

状況に応じて異なるループを使用します。たとえば、whileループは、指定された条件が真になるまで、指定されたコマンドを実行します

ネストループ


すべてのループはネスト概念をサポートしています。つまり、あるループを別の同様のループ内に置くことができます。このネストは、要件に応じて無制限に実行できます。

whileループのネストの例を示します。他のループは、同様の方法でプログラミング要件に基づいて入れ子にすることができます。

ループ中のネスティング


もう一方のループの本体の一部としてwhileループを使用することは可能です。

ループネストの簡単な例を次に示します。ループ内に別のカウントダウンループを追加して、9までカウントしてみましょう。

#!/bin/sh

a=0
while [ "$a" -lt 10 ]    # this is loop1
do
   b="$a"
   while [ "$b" -ge 0 ]  # this is loop2
   do
      echo -n "$b "
      b=`expr $b - 1`
   done
   echo
   a=`expr $a + 1`
done

これにより、次の結果が得られます。ここでecho -nがどのように動作するかを注意することが重要です。ここで-nオプションを指定すると、エコーは改行文字を印刷しないようにします。

0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0

次のページ

前のページ

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。