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 変数に現在のファイル名が格納されるため、各ファイルに対して処理を自動的に実行できます。
ブレース展開を使って、数値の範囲をループ処理することもできます。
#!/bin/bash
for i in {1..5}; do
echo "Number: $i"
doneこれは1から5までの数値を出力します。ループを使うと、繰り返しの作業をわずか数行のコードで実行できるため、スクリプトの効率が上がり、保守もしやすくなります。
チャレンジ
簡単5から1までのカウントダウンを表示する、countdown.shというシェルスクリプトを作成してください。
スクリプトは次の要件を満たす必要があります。
- shebang行(
#!/bin/bash)から始める - ブレース展開を使ったforループで、5から1までの数値を順に処理する
- 各数値をそれぞれ1行に、次の形式で表示する:
Countdown: [number]
スクリプトに実行権限を付与して実行してください。出力は次のようになります。
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1ヒント:
{5..1}を使って降順の範囲を作成してください。ループ内では、ループ変数としてiを使い、echo "Countdown: $i"を実行してください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド