Bashのif else文の基礎と実用例:スクリプト初心者向けガイド

Bashスクリプトを書く上で重要な制御フローの一つにif else文があります。条件に応じて異なる処理を実行したいときに非常に便利です。この記事では、Bashのif else文について基礎から実用例までを詳しく解説し、スクリプト初心者向けにわかりやすく説明します。

if else文の基本構造

まずは、Bashのif else文の基本構造を見てみましょう。一般的に以下のようになります。

if [ 条件式 ]; then
    # 条件式が真の場合に実行されるコマンド
else
    # 条件式が偽の場合に実行されるコマンド
fi

構文のポイント

  • ifブロック開始時の条件式は角括弧 [] で囲むのが一般的です。条件式と括弧の間にはスペースが必要です。
  • then キーワードの前に新しい行を置くか、セミコロン(;)を使用して区切ることができます。
  • 全体のif else文は fi で終了させます。

簡単な例

次に、具体的な例を見てみましょう。

#!/bin/bash

read -p "あなたの年齢を入力してください: " age

if [ "$age" -ge 18 ]; then
    echo "あなたは成人です。"
else
    echo "あなたは未成年です。"
fi

このスクリプトでは、ユーザーの年齢を入力してもらい、年齢が18以上であれば「成人」、それ以外は「未成年」と表示します。

条件式について

この例では、-ge(greater than or equal to)を使って、数値の比較を行っています。他にもよく使われる演算子には以下があります:

  • -eq : 等しい(equal)
  • -ne : 等しくない(not equal)
  • -lt : より小さい(less than)
  • -le : 以下(less than or equal to)
  • -gt : より大きい(greater than)

また、文字列の比較には以下を使用します:

  • = : 文字列が等しい
  • != : 文字列が等しくない

elifを使った複数条件

時にはif else文だけでなく、複数の条件を評価したい場合があります。そんなときはelifを使います。以下にその構造を示します。

#!/bin/bash

read -p "点数を入力してください: " score

if [ "$score" -ge 90 ]; then
    echo "成績はAです。"
elif [ "$score" -ge 80 ]; then
    echo "成績はBです。"
elif [ "$score" -ge 70 ]; then
    echo "成績はCです。"
else
    echo "成績はDです。"
fi

ここでelifを使うことで、スクリプトは最初に90以上かどうかを評価し、続いて80以上、70以上の順序で評価を続け、それぞれに応じたメッセージを出力します。

実用例:ファイルの存在を確認

Bashでは、if else文を使用して、特定のファイルが存在するかどうかを確認するスクリプトを書くことができます。例えば、ディレクトリ内に特定のファイルが含まれているかどうかを確認する簡単なスクリプトを作成します。

#!/bin/bash

file_path="/path/to/your/file.txt"

if [ -f "$file_path" ]; then
    echo "ファイル $file_path が存在します。"
else
    echo "ファイル $file_path は存在しません。"
fi

この例では、-fを使用して、指定したパスに対して通常のファイルが存在するかどうかをチェックしています。他のファイルテスト演算子としては以下があります:

  • -d : ディレクトリの存在をチェック
  • -e : ファイルまたはディレクトリの存在をチェック
  • -r : ファイルの読み取り権限があるかをチェック
  • -w : ファイルの書き込み権限があるかをチェック
  • -x : ファイルの実行権限があるかをチェック

ネストしたif文

場合によっては、if文の中にさらに別のif文を入れることが必要になります。これをネストされたif文と呼びます。

#!/bin/bash

read -p "ユーザー名を入力してください: " username
read -p "パスワードを入力してください: " password

if [ "$username" == "admin" ]; then
    if [ "$password" == "1234" ]; then
        echo "ログイン成功"
    else
        echo "パスワードが間違っています"
    fi
else
    echo "ユーザー名が間違っています"
fi

この例では、ユーザー名が"admin"でかつパスワードが"1234"であるかをチェックしてログイン判定を行います。このように、ネストを用いることでより複雑な条件を評価できます。

条件式の括弧なし記法

標準のBashシェルスクリプトで[とスペースを使って条件を記述する方法が一般的ですが、これを[[を用いた記法に変更することで、より強力で包括的な条件評価が可能になります。

#!/bin/bash

read -p "文字を入力してください: " input

if [[ "$input" =~ ^[0-9]+$ ]]; then
    echo "入力されたものは数字です。"
else
    echo "入力されたものは数字ではありません。"
fi

この例のように、[[と正規表現を組み合わせることで、入力が数字かどうかをチェックすることができます。

まとめ

Bashの制御構造であるif else文は、条件分岐を実現するための基本的で非常に強力なツールです。単純な条件から複雑なネストされた条件まで、用途に応じて柔軟に対応することが可能です。Bashスクリプトを使った自動化やタスクの効率化を行うには不可欠な知識ですので、ぜひマスターしてください。演習問題を通じてさらに理解を深めることもお勧めします。

Bash玄

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

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

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

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

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

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

Bash玄をフォローする
未分類

コメント

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