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までの数字を出力します。forループを使用すると、繰り返し作業をわずか数行のコードに収めることができるため、スクリプトがより効率的になり、保守も容易になります。
チャレンジ
簡単5から1までのカウントダウンを出力するcountdown.shというシェルスクリプトをforループを使用して作成してください。
スクリプトは以下の仕様を満たす必要があります:
- シバン行(
#!/bin/bash)から開始する - ブレース展開を使用した
forループで、数字の5から1まで順番にループ処理する - 各数字を
Countdown: [number]の形式でそれぞれの行に出力する
スクリプトを実行可能にして実行してください。出力は以下のようになります:
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1ヒント: 降順の範囲を作成するには
{5..1}を使用します。ループ内では、ループ変数としてiを使用し、echo "Countdown: $i"を使用してください。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。