Bash条件分岐をマスターしよう:if文とcase文の基本的な使い方と実例

Bashスクリプトは、シェル環境での自動化やタスクの効率化に非常に役立つツールです。特に、条件分岐を理解することで、スクリプトの柔軟性と機能性は大幅に向上します。この記事では、Bashスクリプトで使用する最も基本的な条件分岐構造であるif文とcase文の使用法について詳しく解説し、具体的な例を示します。

if文の基本

Bashのif文は、評価する条件式が真である場合に特定のコマンドを実行し、それ以外の場合に他のコマンドを実行するための構造です。if文を使うことで、動的かつ柔軟なスクリプトを作成できます。

基本的な構文

if [ 条件式 ]; then
    コマンド1
elif [ 追加条件式 ]; then
    コマンド2
else
    コマンド3
fi

上記の構文を見ると、if文はelifelseキーワードを含むことができ、これによって複数の条件に応じた異なる処理を記述できます。elifelseは省略可能で、必要に応じて構成を調整できます。

条件式の書き方

[ 条件式 ]testコマンドの略記であり、スペースに注意が必要です。よく使われる条件式には以下のようなものがあります:

  • 数値比較:-eq(等しい)、-ne(等しくない)、-lt(より小さい)、-le(以下)、-gt(より大きい)、-ge(以上)
  • 文字列比較:=(等しい)、!=(等しくない)
  • ファイル判定:-e(存在する)、-d(ディレクトリである)、-f(ファイルである)

実例

以下のスクリプトは、入力された数値が10より大きいかどうかをチェックします。

#!/bin/bash

read -p "Enter a number: " number

if [ "$number" -gt 10 ]; then
    echo "The number is greater than 10."
elif [ "$number" -eq 10 ]; then
    echo "The number is exactly 10."
else
    echo "The number is less than 10."
fi

このスクリプトを実行すると、ユーザからの入力に応じたメッセージが表示されます。

case文の基本

case文は、ひとつの変数や値を複数のパターンと照合し、該当するパターンに応じた処理を実行するために使用します。特に、複数の比較条件を持つ場合にif文よりも見通しよく書けるため便利です。

基本的な構文

case 変数 in
    パターン1)
        コマンド1
        ;;
    パターン2)
        コマンド2
        ;;
    *)
        その他のコマンド
        ;;
esac

case文では、inキーワードを用いて変数に対して各パターンを提示し、それにマッチする場合の処理を書くことができます。;;は各ケースの終了を示し、*はデフォルトケース(他のいずれにも当てはまらない場合)として役立ちます。

実例

次の例では、ユーザが選択した果物に応じたメッセージを表示します。

#!/bin/bash

echo "Choose a fruit: apple, banana, or cherry"
read fruit

case $fruit in
    apple)
        echo "You chose apple."
        ;;
    banana)
        echo "You chose banana."
        ;;
    cherry)
        echo "You chose cherry."
        ;;
    *)
        echo "Unknown fruit."
        ;;
esac

上記のスクリプトを実行すると、ユーザによる果物の選択に基づいて異なるメッセージが表示されます。

if文とcase文を効果的に使う

実行の流れや特定の条件に基づく処理の分岐を考えるとき、一番重要なのは可読性です。短いスクリプトではif文のみで十分対応できますが、条件が複雑になりすぎるとcase文による整理が非常に有効になります。

メンテナンス性の確保

どちらの構文も使いすぎると、スクリプトが読みにくくなる可能性があります。ネストされたif文や過度に複雑なcase文は避け、スクリプトが理解しやすい形になるよう工夫することが大切です。たとえば、関数を用いて条件ごとの処理を切り分けたり、スクリプトを段階的に開発していくことで可読性やメンテナンス性を確保できます。

結論

Bashスクリプトにおける条件分岐をマスターすることは、日常的なタスクの自動化やカスタムツールの作成に非常に有効です。if文とcase文の基本を理解し、実際にどんどん書いてみることでスクリプト作成スキルを向上させていきましょう。多くの場面で役立つこのスキルが、あなたの効率を大いに高めてくれるはずです。

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする
Bashの基本

コメント

タイトルとURLをコピーしました