forループ
CoddyのTerminalジャーニー「基礎」セクションの一部。レッスン 71/82。
同じ操作を何度も繰り返す必要がある場合があります。同じコマンドを何度も書く代わりに、for ループを使って項目のリストを反復処理し、それぞれに対して操作を実行できます。
Bashにおけるforループの基本的な構造は次のとおりです。
#!/bin/bash
for name in Alice Bob Charlie; do
echo "Hello, $name!"
doneこのスクリプトは、list 内の各名前に対してあいさつを出力します。変数 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)で開始する - ブレース展開を使った for ループで、5 から 1 までの数値を順番に処理する
- 各数値を 1 行ずつ、次の形式で出力する:
Countdown: [number]
スクリプトを実行可能にして実行してください。出力は次のようになります。
Countdown: 5
Countdown: 4
Countdown: 3
Countdown: 2
Countdown: 1ヒント:降順の範囲を作成するには
{5..1}を使います。ループ内では、iがループ変数であるecho "Countdown: $i"を使います。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド