until は Linux シェル(bash など)の ループ構文 で、指定した条件が 真になるまで 繰り返し処理を実行します。while が「条件が真の間」繰り返すのに対し、until は「条件が偽の間」繰り返すという逆の動作をします。
構文(Syntax)
until [ 条件式 ]
do
コマンド群
done
主な使用パターン
| 形式 | 説明 | 使用例 |
|---|---|---|
until [ 条件 ] | 条件が偽の間ループ | until [ $i -gt 5 ]; do echo $i; i=$((i+1)); done |
until false | 無限ループ(while true と同等) | until false; do date; sleep 1; done |
実行例
1〜5までカウントアップ
i=1
until [ $i -gt 5 ]
do
echo "Count: $i"
i=$((i+1))
done
出力例:
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
条件が満たされるまで待機(ファイルが存在するまで)
until [ -f /tmp/ready.flag ]
do
echo "waiting..."
sleep 2
done
echo "file detected!"
出力例:
waiting...
waiting...
file detected!
無限ループ(Ctrl+Cで停止)
until false
do
date
sleep 1
done
出力例:
Thu Aug 21 12:45:01 JST 2025
Thu Aug 21 12:45:02 JST 2025
...
エラー例(条件式を省略)
until
do
echo "test"
done
出力例:
bash: syntax error near unexpected token `do'
関連コマンド / 構文
while: 条件が真の間ループ処理(untilの逆の動作)for: 範囲やリストを順に処理break: ループを中断して抜けるcontinue: 次のループに進む
備考
untilは シェルの構文(キーワード) であり、which untilなどでは場所を確認できません。whileとuntilは表裏一体の構文ですが、処理の意図を明確にするために適切に使い分けるとコードが読みやすくなります。
参考
- GNU Bash Reference Manual – Looping Constructs
- POSIX sh specification – Shell Command Language

コメント