開発運用

シェルスクリプト制御構文入門

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

シェルスクリプトにおける制御構文(Flow Control)は、スクリプトがどのように実行されるかを決定するために非常に重要な役割を果たします。第2部では、if文、for文、while文、case文などの基本的な制御構文の使用方法とその応用について詳しく解説します。これらの構文を正しく使用することで、シェルスクリプトはより効率的で柔軟なものとなり、ユーザーのニーズに応じた動的な動作を実現できます。

1. if文とその応用

if文は、シェルスクリプトで最も一般的に使用される制御構文の一つです。条件が真である場合に特定の処理を実行し、偽である場合には別の処理を実行することができます。if文は単独で使用することもできますが、elseelifを使って複雑な条件分岐を作成することも可能です。

基本構文
bash
if [ 条件 ]; then コマンド fi
例:簡単なif文の使用
bash
#!/bin/bash read -p "数字を入力してください: " number if [ $number -gt 10 ]; then echo "入力された数字は10より大きいです。" fi

このスクリプトでは、ユーザーが入力した数字が10より大きければ、”入力された数字は10より大きいです。” と表示されます。

elseを使用した分岐
bash
#!/bin/bash read -p "数字を入力してください: " number if [ $number -gt 10 ]; then echo "入力された数字は10より大きいです。" else echo "入力された数字は10以下です。" fi

ここでは、数字が10より大きいかどうかに応じて異なるメッセージが表示されます。

elifを使用した複数の条件分岐
bash
#!/bin/bash read -p "数字を入力してください: " number if [ $number -gt 10 ]; then echo "入力された数字は10より大きいです。" elif [ $number -eq 10 ]; then echo "入力された数字は10です。" else echo "入力された数字は10より小さいです。" fi

elifを使用することで、複数の条件を順番にチェックし、適切なメッセージを表示できます。

2. for文とその使用方法

for文は、指定した回数だけ繰り返し処理を実行するための制御構文です。配列や範囲指定を使って繰り返し処理を行うことができます。

基本構文
bash
for 変数 in リスト; do コマンド done
例:1から5までの数字を表示する
bash
#!/bin/bash for i in {1..5}; do echo "数字は $i です" done

このスクリプトでは、1から5までの数字を順番に表示します。

配列を使用したfor
bash
#!/bin/bash fruits=("apple" "banana" "cherry") for fruit in "${fruits[@]}"; do echo "フルーツは $fruit です" done

配列を使うことで、複数のアイテムをループ処理で扱うことができます。

3. while文とその使用方法

while文は、指定した条件が真である間、繰り返し処理を実行します。この構文は条件が満たされる限り処理を繰り返すため、無限ループを作る際に非常に便利です。

基本構文
bash
while 条件; do コマンド done
例:カウンタが5になるまで繰り返す
bash
#!/bin/bash counter=1 while [ $counter -le 5 ]; do echo "カウンタは $counter です" ((counter++)) done

このスクリプトでは、counterが5以下である限り繰り返し処理が行われ、毎回カウンタの値が表示されます。

4. until文とその使用方法

until文は、while文とは逆で、指定した条件が偽である間、繰り返し処理を実行します。

基本構文
bash
until 条件; do コマンド done
例:カウンタが5になるまで繰り返す
bash
#!/bin/bash counter=1 until [ $counter -gt 5 ]; do echo "カウンタは $counter です" ((counter++)) done

until文では、カウンタが5を超えるまで処理が繰り返されます。

5. case文の使用方法

case文は、指定したパターンに基づいて異なる処理を行いたい場合に使用します。文字列のパターンマッチングを行い、条件に応じて異なるブロックを実行できます。

基本構文
bash
case 変数 in パターン1) コマンド1 ;; パターン2) コマンド2 ;; *) デフォルト処理 ;; esac
例:入力に応じたメッセージを表示
bash
#!/bin/bash read -p "好きな色を入力してください: " color case $color in "赤") echo "あなたの好きな色は赤です。" ;; "青") echo "あなたの好きな色は青です。" ;; "緑") echo "あなたの好きな色は緑です。" ;; *) echo "その色は選択肢にありません。" ;; esac

このスクリプトでは、ユーザーが入力した色に応じて異なるメッセージが表示されます。

6. まとめと応用

シェルスクリプトの制御構文は、スクリプトのフローを柔軟に制御するために非常に重要です。if文やfor文、while文、case文などを使いこなすことで、複雑な処理を簡潔に記述できます。これらの構文を適切に組み合わせることで、シェルスクリプトは強力で効率的なツールとなり、さまざまな自動化タスクを実行することが可能です。

シェルスクリプトにおける制御構文の理解を深めることで、より高度なスクリプトを作成することができるようになります。

Back to top button