Unix / Linux – シェルループ制御

スポンサーリンク

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

この章では、Unixにおけるシェルループ制御について説明します。これまでは、ループを作成し、ループを使ってさまざまなタスクを実行する方法を検討しました。場合によっては、ループを停止するか、ループの繰り返しをスキップする必要が条件によっては必要となってきます。

この章では、シェル・ループを制御するために使用される2つのステートメント、

  • ブレークステートメント
  • コンテニューステートメント について説明していきます。

無限ループ


すべてのループの寿命は限られており、ループに応じて条件が偽または真であると出てきます。

必要な条件が満たされない場合、ループは永遠に続くことがあります。終了せずに永久に実行するループは、無限回数実行されます。このため、このようなループを無限ループと呼びます。

whileループを使ってゼロから9までの数字を表示する簡単な例を以下に示します。

#!/bin/sh

a=10

until [ $a -lt 10 ]
do
   echo $a
   a=expr $a + 1`
done

上記のように実行ができます

breakステートメント


ブレーク文はbreak文までのコードの行のすべての実行が完了した後、全体のループの実行を終了するために使用されます。その後、ループの最後に続くコードにステップダウンします。

構文

次のbreak文は、ループから出てくるために使用されます。

break

breakコマンドを使用して、この形式を使用してネストされたループを終了することもできます。

break n


ここではブレーク文の簡単な説明をしています。ちなみに-ltはless thanつまりは未満 -eq qpual イコールですよ。

#!/bin/sh

a=0

while [ $a -lt 10 ] 
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done
結果は下記のようになります。
0
1
2
3
4
5

ここでは、ネストされたforループの簡単な例を示します。 –

#!/bin/sh

for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

実行すると、次の結果が表示されます。内側のループでは、引数2のbreakコマンドがあります。これは、条件が満たされた場合、外側のループから抜け出し、最終的には内側のループから抜け出すことを意味しています。

1 0
1 5

continue文


継続ステートメントはブレークにているところがあります

このステートメントは、エラーが発生したがループの次の繰り返しを実行しようとする場合に便利です。

構文

continue

break文と同様に、continue引数に整数引数を指定すると、ネストされたループからコマンドをスキップできます。

continue n


次のループは、continueステートメントから戻ってくる次のステートメントの処理を開始するcontinueステートメントを使用します。

#!/bin/sh

NUMS="1 2 3 4 5 6 7"

for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

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

Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number

次のページ

前のページ

スポンサーリンク

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