Menu
CoddyTech

forループ

CoddyのTerminalジャーニー「基礎」セクションの一部。レッスン 71/82。

同じ操作を何度も繰り返す必要がある場合があります。同じコマンドを何度も書く代わりに、forループを使って項目のリストを順に処理し、それぞれに対して操作を実行できます。

Bashにおけるforループの基本構造は次のとおりです。

#!/bin/bash
for name in Alice Bob Charlie; do
    echo "Hello, $name!"
done

このスクリプトは、リスト内の各名前に対して挨拶を出力します。変数 name には、順番にそれぞれの値が代入されます。最初は "Alice"、次に "Bob"、その次に "Charlie" です。do キーワードはループ本体の開始を示し、done はその終了を示します。

forループは、ワイルドカードと組み合わせると特に強力です。ディレクトリ内のすべてのファイルをループで処理できます。

#!/bin/bash
for file in *.txt; do
    echo "Processing $file"
done

これは現在のディレクトリにあるすべての.txtファイルを順に処理します。繰り返しごとに、file変数には現在のファイル名が格納されるため、各ファイルに対する処理を自動的に実行できます。

知っておくべき意外な点が1つあります。パターンに一致するファイルがまったくない場合、Bashはパターンを展開しません。その場合、ループはまったく実行されないのではなく、値としてリテラルテキスト*.txtを使って1回実行されます。

ブレース展開を使って数値の範囲をループすることもできます。

#!/bin/bash
for i in {1..5}; do
    echo "Number: $i"
done

これは1から5までの数字を出力します。forループを使うと、繰り返し作業をわずか数行のコードで実行できるため、スクリプトの効率が上がり、保守もしやすくなります。

challenge icon

チャレンジ

簡単

countdown.shという名前のシェルスクリプトを作成し、forループを使って5から1までカウントダウンを表示します。

スクリプトの要件:

  1. シバン行(#!/bin/bash)から始める
  2. ブレース展開を使ったforループで、5から1までの数値を順に処理する
  3. 各数値を独立した行に、次の形式で表示する:Countdown: [number]

スクリプトを実行可能にして、実行してください。出力は次のようになります:

Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1

ヒント: {5..1}を使って降順の範囲を作成します。ループ内では、ループ変数がiのとき、echo "Countdown: $i"を使います。

自分で試してみよう

ターミナル
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Terminalプレイグラウンド