Bashのuntilループをマスターする:初心者向けガイド

January 16, 2025

Bashスクリプトのuntilループは、特定の条件が満たされるまで処理を繰り返すための構文です。whileループとは逆の動作をし、条件が「偽」の間だけ実行されます。本記事では、Bashのuntilループの基本構文から実用的な例までを初心者向けに解説します。


1. Bashのuntilループの基本構文

untilループの基本構文は以下の通りです:

構文:


until [ 条件 ]; do
    # 条件が偽である間実行されるコマンド
done

例:

以下の例では、変数countが5になるまで処理を繰り返します。


#!/bin/bash

count=1
until [ $count -gt 5 ]; do
    echo "カウント: $count"
    ((count++))
done

出力結果:


カウント: 1
カウント: 2
カウント: 3
カウント: 4
カウント: 5

2. 条件を利用した実用例

untilループは、特定の条件に基づいて繰り返し処理を行う際に便利です。

例:ユーザー入力の検証


#!/bin/bash

password=""
until [ "$password" == "secret" ]; do
    read -p "パスワードを入力してください: " password
done
echo "正しいパスワードが入力されました!"

出力結果:


パスワードを入力してください: test
パスワードを入力してください: secret
正しいパスワードが入力されました!

3. ファイル操作での応用

untilループは、ファイルの存在をチェックしながら処理を進める場合にも役立ちます。

例:ファイルが作成されるまで待機


#!/bin/bash

file="example.txt"
until [ -e "$file" ]; do
    echo "ファイルが見つかりません。再確認しています..."
    sleep 2
done
echo "ファイルが作成されました: $file"

出力結果:

このスクリプトは、example.txtが作成されるまで2秒ごとにチェックを繰り返します。


4. ネストされたuntilループ

複数の条件を同時に評価したい場合は、untilループをネストすることができます。

例:


#!/bin/bash

outer=1
until [ $outer -gt 3 ]; do
    echo "Outerループ: $outer"
    inner=1
    until [ $inner -gt 2 ]; do
        echo "  Innerループ: $inner"
        ((inner++))
    done
    ((outer++))
done

出力結果:


Outerループ: 1
  Innerループ: 1
  Innerループ: 2
Outerループ: 2
  Innerループ: 1
  Innerループ: 2
Outerループ: 3
  Innerループ: 1
  Innerループ: 2

5. 実用的な応用例

以下は、untilループを使用した実践的な例です:

例1:特定のプロセスが終了するまで待機


#!/bin/bash

process="myapp"
until ! pgrep "$process" > /dev/null; do
    echo "プロセス $process が実行中です。終了を待っています..."
    sleep 5
done
echo "プロセス $process が終了しました!"

例2:ネットワーク接続の確認


#!/bin/bash

until ping -c 1 google.com > /dev/null 2>&1; do
    echo "インターネット接続がありません。再試行中..."
    sleep 3
done
echo "インターネット接続が確立されました!"

まとめ

Bashのuntilループは、条件が満たされるまで処理を繰り返す便利な構文です。基本構文を理解し、実用例を参考にして、自分のスクリプトに活用してみましょう。

さらにBashスクリプトを学びたい方は、私たちのBashスクリプトチートシートもご覧ください!初心者から上級者まで役立つ情報が満載です。