Bashのforループ - リスト、範囲、ファイルの反復処理

リスト反復、C言語スタイルのループ、範囲式、ファイルグロブ、コマンド出力の反復処理を含むbashのforループの完全ガイド。

Control Flow

詳細な説明

Bashのforループ

forループはbashで最も汎用的な制御フロー構文の1つです。リスト、範囲、ファイルパターン、コマンド出力を反復処理できます。

基本的なリスト反復

for fruit in apple banana cherry; do
  echo "I like $fruit"
done

範囲式

for i in {1..10}; do
  echo "Number: $i"
done

# ステップ付き範囲
for i in {0..100..5}; do
  echo "Value: $i"
done

C言語スタイルのforループ

for ((i=0; i<10; i++)); do
  echo "Iteration $i"
done

ファイルの反復処理

for file in *.log; do
  echo "Compressing $file"
  gzip "$file"
done

コマンド出力の反復処理

for user in $(cut -d: -f1 /etc/passwd); do
  echo "User: $user"
done

実践的な例

# ファイルの一括リネーム
for file in *.jpeg; do
  mv "$file" "${file%.jpeg}.jpg"
done

# 複数サーバーのチェック
for server in web{1..5}.example.com; do
  ping -c 1 -W 2 "$server" > /dev/null 2>&1 \
    && echo "$server: UP" \
    || echo "$server: DOWN"
done

注意:スペースを含む可能性のあるファイル名を反復処理する場合は、常に変数をクォートしてください:$fileではなく"$file"

ユースケース

forループはほぼすべてのbashスクリプトで使用されます。一般的な使用例はファイルのバッチ処理(リネーム、変換、圧縮)、複数ホストのサーバーヘルスチェック、複数環境への自動デプロイ、ログローテーションスクリプト、データ処理パイプラインなどです。

試してみる — Bash Cheat Sheet

フルツールを開く