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ループは繰り返しのタスクをわずか数行のコードに変え、スクリプトをより効率的で保守しやすくします。
チャレンジ
簡単countdown.sh という名前のシェルスクリプトを作成し、for ループを使用して 5 から 1 へのカウントダウンを印刷します。
スクリプトは以下のことを行う必要があります:
- シェバン行(
#!/bin/bash)で始めます - ブレース展開を使用して数字 5 から 1 へイテレートする for ループを使用します
- 各数字を自分の行に
Countdown: [number]の形式で印刷します
スクリプトを実行可能にし、実行します。出力は以下のようになるはずです:
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1ヒント: 下降範囲を作成するために
{5..1}を使用します。ループ内で、ループ変数であるiを使用してecho "Countdown: $i"を使用します。
チートシート
for ループを使うと、アイテムのリストをイテレートし、各アイテムに対してアクションを実行できます。
基本構文:
for variable in list; do
# commands
done値のリストを繰り返し処理:
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneワイルドカードを使ってファイルを繰り返し処理:
for file in *.txt; do
echo "Processing $file"
doneブレース展開を使って数値の範囲を繰り返し処理:
for i in {1..5}; do
echo "Number: $i"
done降順の範囲の場合、順序を逆にする:
for i in {5..1}; do
echo "Number: $i"
done自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。