while – 条件を満たす間ループ処理を行うシェル構文

制御構文(条件・ループ)

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(フィールド区切り文字)の影響を受けるため、制御が必要な場合があります。
  • 大規模なデータ処理では、awksed などの方が効率的な場合もあります。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント