シェルスクリプトにおける制御構文(Flow Control)の使用方法 – 第2部
シェルスクリプトにおける制御構文(Flow Control)は、スクリプトがどのように実行されるかを決定するために非常に重要な役割を果たします。第2部では、if文、for文、while文、case文などの基本的な制御構文の使用方法とその応用について詳しく解説します。これらの構文を正しく使用することで、シェルスクリプトはより効率的で柔軟なものとなり、ユーザーのニーズに応じた動的な動作を実現できます。
1. if文とその応用
if
文は、シェルスクリプトで最も一般的に使用される制御構文の一つです。条件が真である場合に特定の処理を実行し、偽である場合には別の処理を実行することができます。if
文は単独で使用することもできますが、else
やelif
を使って複雑な条件分岐を作成することも可能です。
基本構文
bashif [ 条件 ]; 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
文は、指定した回数だけ繰り返し処理を実行するための制御構文です。配列や範囲指定を使って繰り返し処理を行うことができます。
基本構文
bashfor 変数 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
文は、指定した条件が真である間、繰り返し処理を実行します。この構文は条件が満たされる限り処理を繰り返すため、無限ループを作る際に非常に便利です。
基本構文
bashwhile 条件; do
コマンド
done
例:カウンタが5になるまで繰り返す
bash#!/bin/bash
counter=1
while [ $counter -le 5 ]; do
echo "カウンタは $counter です"
((counter++))
done
このスクリプトでは、counter
が5以下である限り繰り返し処理が行われ、毎回カウンタの値が表示されます。
4. until文とその使用方法
until
文は、while
文とは逆で、指定した条件が偽である間、繰り返し処理を実行します。
基本構文
bashuntil 条件; do
コマンド
done
例:カウンタが5になるまで繰り返す
bash#!/bin/bash
counter=1
until [ $counter -gt 5 ]; do
echo "カウンタは $counter です"
((counter++))
done
until
文では、カウンタが5を超えるまで処理が繰り返されます。
5. case文の使用方法
case
文は、指定したパターンに基づいて異なる処理を行いたい場合に使用します。文字列のパターンマッチングを行い、条件に応じて異なるブロックを実行できます。
基本構文
bashcase 変数 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
文などを使いこなすことで、複雑な処理を簡潔に記述できます。これらの構文を適切に組み合わせることで、シェルスクリプトは強力で効率的なツールとなり、さまざまな自動化タスクを実行することが可能です。
シェルスクリプトにおける制御構文の理解を深めることで、より高度なスクリプトを作成することができるようになります。