開発運用

シェルスクリプトの制御構造

シェルスクリプトにおける制御構造(Flow Control)の利用方法 – 第1部

シェルスクリプトは、Unix系のオペレーティングシステム(OS)で動作するスクリプト言語であり、コマンドを自動化したり、システムタスクを効率的に処理したりするために広く利用されています。シェルスクリプトには、プログラムの制御フローを操作するためのさまざまな構造(制御構造)が用意されており、これによりスクリプト内での処理の流れを制御できます。制御構造は、特定の条件に基づいて異なる処理を実行したり、繰り返し処理を行ったりするために必要不可欠な要素です。

本記事では、シェルスクリプトにおける制御構造の基本的な使い方を解説します。制御構造を効果的に使用することで、より柔軟で効率的なスクリプトを作成できるようになります。

1. 条件分岐(if文)

条件分岐は、スクリプト内で特定の条件が満たされた場合に異なる処理を実行するために使用されます。最も基本的な形は、if 文を使用する方法です。

例:基本的なif文

bash
#!/bin/bash # 変数の定義 number=10 # 条件分岐 if [ $number -gt 5 ]; then echo "numberは5より大きいです" fi

上記のスクリプトでは、number が5より大きい場合にメッセージを表示します。条件式は[ ]内に記述し、-gtは「greater than(より大きい)」を意味します。

例:if-else文

if 文に else を追加することで、条件が満たされない場合の処理を記述できます。

bash
#!/bin/bash number=3 if [ $number -gt 5 ]; then echo "numberは5より大きいです" else echo "numberは5以下です" fi

この例では、number が5より大きい場合に最初のメッセージが表示され、そうでない場合に2番目のメッセージが表示されます。

例:if-elif-else文

elif(else if)を使うことで、複数の条件を順番に評価することができます。

bash
#!/bin/bash number=7 if [ $number -gt 10 ]; then echo "numberは10より大きいです" elif [ $number -eq 7 ]; then echo "numberは7です" else echo "numberは10以下ですが7ではありません" fi

このスクリプトは、number が10より大きいか、7と等しいか、それともその両方でない場合に異なるメッセージを表示します。

2. 繰り返し処理(for文)

for 文は、指定した回数だけ処理を繰り返すために使用されます。リストの要素や数値の範囲を繰り返し処理する際に便利です。

例:リストを使ったfor文

bash
#!/bin/bash # リストの定義 fruits=("リンゴ" "バナナ" "オレンジ") # for文による繰り返し for fruit in "${fruits[@]}"; do echo "果物は:$fruit" done

このスクリプトは、リスト内の各果物の名前を順番に表示します。

例:数値範囲を使ったfor文

bash
#!/bin/bash # 1から5までの数字を表示 for i in {1..5}; do echo "番号:$i" done

この例では、1から5までの数字を順番に表示します。数値の範囲を指定することで、簡単にループ処理が行えます。

3. 繰り返し処理(while文)

while 文は、指定した条件が真である限り繰り返し処理を行います。この構造は、条件が満たされている間、継続的に処理を実行するのに適しています。

例:条件に基づいたwhile文

bash
#!/bin/bash count=1 while [ $count -le 5 ]; do echo "カウント:$count" ((count++)) done

このスクリプトは、count が5以下である間、1から5までのカウントを順番に表示します。((count++)) はカウントを1ずつ増加させる式です。

4. 繰り返し処理(until文)

until 文は、指定した条件が真になるまで繰り返し処理を実行します。while 文と逆の動作をするため、条件が満たされるまで処理を続けます。

例:条件が満たされるまで繰り返すuntil文

bash
#!/bin/bash count=1 until [ $count -gt 5 ]; do echo "カウント:$count" ((count++)) done

この例では、count が5より大きくなるまで繰り返し処理を行います。

5. break と continue

break は、ループを途中で終了させるために使用され、continue はループの現在のイテレーションをスキップして次の繰り返しに進むために使用されます。

例:breakの使用

bash
#!/bin/bash for i in {1..10}; do if [ $i -eq 5 ]; then echo "5に到達したのでループを終了します" break fi echo "番号:$i" done

このスクリプトは、i が5に到達した時点でループを終了します。

例:continueの使用

bash
#!/bin/bash for i in {1..5}; do if [ $i -eq 3 ]; then continue fi echo "番号:$i" done

このスクリプトでは、i が3の時にそのイテレーションをスキップし、次の繰り返しを実行します。

まとめ

シェルスクリプトにおける制御構造は、スクリプトの流れを制御するために非常に重要です。if 文を使った条件分岐、forwhile を使った繰り返し処理、そして breakcontinue を使ったループ制御は、シェルスクリプトを効率的かつ柔軟に作成するための基本的な手段となります。

次回のパートでは、より複雑な制御構造や、関数を使ったコードの再利用方法について解説します。

Back to top button