while は Linux シェル(bash など)における ループ構文 で、指定した条件が真の間、繰り返し処理を実行します。
ファイル処理、標準入力の読み取り、監視処理などに広く利用されます。
構文(Syntax)
while [ 条件式 ]
do
コマンド群
done
または パイプ入力を利用する形式:
コマンド | while read line
do
コマンド群
done
主な使用パターン
| 形式 | 説明 | 使用例 |
|---|---|---|
while [ 条件 ] | 条件が真の間ループ | while [ $i -lt 5 ]; do echo $i; i=$((i+1)); done |
while true | 無限ループ | while true; do date; sleep 1; done |
while read line | 標準入力やファイルを1行ずつ処理 | `cat file.txt |
実行例
1〜5までカウントアップ
i=1
while [ $i -le 5 ]
do
echo "Count: $i"
i=$((i+1))
done
出力例:
Count: 1
Count: 2
Count: 3
Count: 4
Count: 5
無限ループ(Ctrl+Cで停止)
while true
do
date
sleep 1
done
出力例(1秒ごとに現在時刻を表示):
Thu Aug 21 12:30:01 JST 2025
Thu Aug 21 12:30:02 JST 2025
...
ファイルを1行ずつ処理
while read line
do
echo "行: $line"
done < sample.txt
出力例:
行: apple
行: banana
行: cherry
パイプで処理
ls | while read f
do
echo "ファイル: $f"
done
エラー例(条件式を省略)
while
do
echo "test"
done
出力例:
bash: syntax error near unexpected token `do'
関連コマンド / 構文
for: リストや範囲を繰り返し処理until: 条件が偽の間ループ処理break: ループを抜けるcontinue: ループの次の繰り返しに進む
備考
whileは シェルの構文(キーワード) であり、which whileなどでは場所を確認できません(外部コマンドではない)。- 入力を扱う場合は
IFS(フィールド区切り文字)の影響を受けるため、制御が必要な場合があります。 - 大規模なデータ処理では、
awkやsedなどの方が効率的な場合もあります。
参考
- manページ: GNU Bash Reference Manual – Looping Constructs
- POSIX sh specification: Shell Command Language

コメント