【Shell】until文:基本的な使い方と「continue」・「break」の使い方

■文の使い方

until文は、指定した条件がであり続ける限り処理を繰り返す。

※参考
while文は指定した条件がであり続ける限り処理を繰り返す処理であり、until文とは真偽が逆であることに注意!!

▼until文の書き方(基礎)

until文の書き方を以下に示す。

until [[ 指定した条件(コマンド) ]]
do
    繰り返す処理を記載する
done

・サンプルプログラムの仕様

▼処理概要
数字を0から9までを表示する。

▼処理詳細
①変数に初期値「0」をセットする。
②until文を使用(条件:変数が9より大きくない間繰り返す)
 ②ー1 変数(数字)を表示
 ②ー2 変数をインクリメント(プラス1する)

・サンプルコード

#!/bin/bash

# 初期値をセット
j=0
# 9より大きくない間繰り返す
until [[ $j -gt 9 ]]
do
    # 数字を表示
    echo "$j"
    # インクリメント処理
    j=$((j + 1))
done

注意!!
インクリメント処理(変数「 j 」の値を増加させる)を行わないと、無限ループしてしまう。

・実行結果

0
1
2
3
4
5
6
7
8
9

▼continueとbreakを使ったuntil文

until文についてもfor文と同様に「continue」と「break」を使用することができる。

▼for文についての参照先

・サンプルプログラムの仕様

▼処理概要
数字の「0、1、2、3、5、6」を表示する。
なお、処理は10回繰り返し、「continue」と「break」を使用すること。

▼処理詳細
①変数に初期値「0」をセットする。
②until文を使用(条件:変数が9より小さい間繰り返す)
 ②ー1 【条件分岐】変数が4の時
  ②ー1ー1 変数をインクリメント(プラス1する)
  ②ー1ー2 スキップ(continue)
 ②ー2 【条件分岐】変数が7の時
  ②ー2ー1 処理終了(break)
 ②ー3 変数(数字)を表示
 ②ー4 変数をインクリメント(プラス1する)

・サンプルコード

#!/bin/bash

# 初期値をセット
j=0
# 9より大きくない間繰り返す
until [[ $j -gt 9 ]]
do
    # iが4のときは続ける(スキップ)
    if [ $j -eq 4 ]; then
        # インクリメント処理
        j=$((j + 1))
        continue
    # iが7のときは終了
   elif [ $j -eq 7 ]; then
        break
    fi
    # 数字を表示
    echo "$j"
    # インクリメント処理
    j=$((j + 1))
done

注意!
上記のような判定処理でcontinueを使用するときは、必ずインクリメント処理(変数「 j 」の値を増加させる)を行わないと、無限ループしてしまう。

・実行結果

0
1
2
3
5
6

4がスキップされ、7の時に終了(break)となる。

タイトルとURLをコピーしました