Unix / Linux - シェルループ:初心者ガイド

こんにちは、プログラミング志望者の皆さん!今日は、UnixおよびLinuxのエキサイティングなシェルループの世界に飛び込んでみましょう。コードを書いたことがない方も心配しないでください。私は年々多くの学生を指導してきましたように、ステップバイステップで案内します。では、始めましょう!

Unix / Linux - Shell Loops

シェルループとは?

パーティーで全てのゲストに挨拶する必要があるとします。それぞれの人に別々に「こんにちは」と書く代わりに、「それぞれのゲストに'こんにちは'を繰り返して」と言えたらいいですね。これがプログラミングにおけるループの役割です。ループは、一連の指示を複数回繰り返すことができます。

シェルスクリプティングでは、ループは繰り返しのタスクを自動化するのに非常に便利です。時間を節約し、手動でコマンドを繰り返す際に発生するエラーの可能性を減少させます。

シェルループの種類

Unix/Linuxシェルスクリプティングでは、主に以下の3種類のループを使用します:

ループの種類 説明 使用ケース
forループ リストの項目を繰り返す 繰り返す回数が正確に分かっている場合
whileループ 条件が真の間続ける 繰り返す回数が不明な場合
untilループ 条件が真になるまで続ける whileループと似ているが、論理が逆

これらを詳しく見ていきましょう。

'for'ループ

'for'ループは、一軒一軒にメッセージを配達する勤勉な郵便配達人のようにです。リストの項目を順繰りに取り出し、それぞれに対してアクションを実行します。

基本的な構文は以下の通りです:

for 変数 in リスト
do
コマンド
done

簡単な例を見てみましょう:

#!/bin/bash
for fruit in apple banana orange
do
echo "I love $fruit"
done

このスクリプトを実行すると以下のように表示されます:

I love apple
I love banana
I love orange

この例では、私たちの「郵便配達人」(ループ)は、「I love」メッセージをそれぞれの「家」(果物)に配達しています。

'while'ループ

'while'ループは、あなたが製品を購入するまでドアをノックし続ける根気強いセールスマンのようにです。条件が真の間、コマンドを繰り返し実行します。

基本的な構文は以下の通りです:

while [ 条件 ]
do
コマンド
done

例を見てみましょう:

#!/bin/bash
count=1
while [ $count -le 5 ]
do
echo "Count is: $count"
count=$((count + 1))
done

このスクリプトは以下のように出力します:

Count is: 1
Count is: 2
Count is: 3
Count is: 4
Count is: 5

この場合、私たちの「セールスマン」(ループ)は「ノック」(カウントを表示)を続けるまで、カウントが5に達するまで続けます。

'until'ループ

'until'ループは、バスが来るまで待つのと似ています。条件が真になるまでコマンドを繰り返し実行します。

基本的な構文は以下の通りです:

until [ 条件 ]
do
コマンド
done

例を見てみましょう:

#!/bin/bash
count=1
until [ $count -gt 5 ]
do
echo "Count is: $count"
count=$((count + 1))
done

このスクリプトは、私たちのwhileループの例と同じ出力を生成します。違いは、カウントが5を超えるまで続けるのに対して、whileループは5以下の間続けます。

ループのネスト

部屋の中に部屋がある(ウォークインクローゼットを思い浮かべてください)のように、ループの中にループを持つこともできます。これをネストと呼びます。

ネストされたforループの例を見てみましょう:

#!/bin/bash
for i in 1 2 3
do
echo "Outer loop: $i"
for j in a b c
do
echo "  Inner loop: $j"
done
done

このスクリプトは以下のように出力します:

Outer loop: 1
Inner loop: a
Inner loop: b
Inner loop: c
Outer loop: 2
Inner loop: a
Inner loop: b
Inner loop: c
Outer loop: 3
Inner loop: a
Inner loop: b
Inner loop: c

これは、外側のループが各「フロア」(フロア)を通過し、各フロアに対して内側のループが各「アパート」(アパート)を通過するように考えられます。

ネストされたwhileループ

whileループもネストできます。以下に例を示します:

#!/bin/bash
i=1
while [ $i -le 3 ]
do
echo "Outer loop: $i"
j=1
while [ $j -le 3 ]
do
echo "  Inner loop: $j"
j=$((j + 1))
done
i=$((i + 1))
done

このスクリプトは、ネストされたforループの例と同様の出力を生成します。

結論

おめでとうございます!シェルループの世界への最初の一歩を踏み出しました。ループは、あなたの助けとなるロボットのようにタスクを繰り返すことができます。'for'ループは、正確に何回繰り返すかを知っている場合に最適です。'while'と'until'ループは、何回繰り返すかが不明で、条件が満たされるまで続けたい場合に最適です。

プログラミングの旅を続ける中で、ループはあなたのツールボックスにおいて非常に価値のあるツールとなります。繰り返しのタスクを自動化し、大量のデータを処理し、より効率的で洗練されたスクリプトを作成するのに役立ちます。

練習を続け、すぐにプロのようにループを使えるようになるでしょう!すべての熟練したプログラマーも、あなたが今いる場所から始まっています。ハッピーコーディング!

Credits: Image by storyset