新Linux入門|シェルスクリプトで条件分岐を行う!if文の書き方と実例

 シェルスクリプトを使って自動化を進めていくと、「もしファイルが存在したら実行する」「もし数値が一致したら次の処理を行う」といった“条件分岐”が必要になります。
そんなときに活躍するのが if文(条件分岐構文) です。

 if文を使えば、スクリプトの中で状況に応じて処理を切り替えることができ、より柔軟で賢いスクリプトを作ることができます。
ここでは、if文の基本構造と使い方をわかりやすく解説します。

⚙️ if文の基本構造

 if文は、与えられた条件が「真(true)」であれば特定の処理を実行し、「偽(false)」なら別の処理を実行する仕組みです。

📘 基本書式

if [ 条件式 ]; then
    コマンド(条件が真の場合に実行)
elif [ 別の条件式 ]; then
    コマンド(別の条件が真の場合に実行)
else
    コマンド(すべての条件が偽の場合に実行)
fi

💬 最後の fi は、if文の終わりを示すキーワードです(ifの逆ですね!)。

🔍 if文で使える主な演算子一覧

条件式の中では、文字列・数値・ファイル に対するチェックを行うことができます。
以下の表に、よく使う演算子をまとめました。

📝 文字列の比較演算子

演算子説明
-n 文字列文字列の長さが1以上なら真
-z 文字列文字列の長さが0なら真
文字列1 = 文字列22つの文字列が等しい場合は真
文字列1 != 文字列22つの文字列が等しくない場合は真

📘 例

string1="hello"
string2="world"

if [ "$string1" = "$string2" ]; then
    echo "Strings are equal."
else
    echo "Strings are not equal."
fi

📗 実行結果

Strings are not equal.

💬 = と != は、文字列の一致・不一致を確認するために使います。
また、変数を展開するときは $変数名 を ダブルクォーテーションで囲む のが基本です。

🔢 数値の比較演算子

演算子説明
-eq等しい(equal)
-ne等しくない(not equal)
-ltより小さい(less than)
-le以下(less than or equal)
-gtより大きい(greater than)
-ge以上(greater than or equal)

📘 例

num1=5
num2=10

if [ "$num1" -lt "$num2" ]; then
    echo "num1 is smaller."
else
    echo "num1 is not smaller."
fi

📗 実行結果

num1 is smaller.

💬 -lt(less than)や -gt(greater than)などの略称を覚えると便利です。

📁 ファイルチェック演算子

演算子条件
-e ファイル存在する
-f ファイル通常ファイルである
-d ファイルディレクトリである
-s ファイルサイズが0ではない
-r ファイル読み取り可能
-w ファイル書き込み可能
-x ファイル実行可能
-L ファイルシンボリックリンク

📘 例

file_path="/home/suzuki/test.txt"

if [ -e "$file_path" ]; then
    echo "File exists."
else
    echo "File does not exist."
fi

📗 実行結果

File does not exist.

💬 ファイル存在チェックはスクリプトでよく使われるパターンです。
例えばバックアップや設定ファイルの有無を確認する際に役立ちます。

🧩 複合条件を扱う

if文では、-a(AND)や -o(OR)を使って複数の条件を組み合わせることもできます。

📘 例

file="/etc/passwd"
dir="/home/suzuki"

if [ -f "$file" -a -d "$dir" ]; then
    echo "Both file and directory exist."
else
    echo "One of them is missing."
fi

💬 このように、複数条件の同時チェックも簡単にできます。
&& や || を使った論理式でも同様の処理が可能です。

🧠 実践例:ユーザー入力を条件で分岐

ユーザーの入力値をもとに条件を分けることもできます。

📘 例

#!/bin/bash

echo "Enter your favorite fruit:"
read fruit

if [ "$fruit" = "apple" ]; then
    echo "You like apples!"
elif [ "$fruit" = "banana" ]; then
    echo "Bananas are sweet!"
else
    echo "Nice choice!"
fi

📗 実行例

[suzuki@AlmaLinux ~]$ ./fruit.sh
Enter your favorite fruit:
banana
Bananas are sweet!

💬 read コマンドで入力を受け取り、それをif文で条件判定しています。
これにより、スクリプトがユーザーと“対話”できるようになります。

📊 まとめ:if文を使いこなすポイント

分類主な演算子使いどころ
文字列比較=, !=, -n, -zテキストや入力値の比較
数値比較-eq, -ne, -lt, -gt計算結果や変数の判定
ファイルチェック-e, -f, -d, -xファイル操作の条件分岐

💬 ポイント

  • [ 条件式 ] の前後には必ずスペースを入れる。
  • 文字列比較では "変数" をクォートする。
  • ファイルパスや環境変数の存在確認に活用できる。

✅ まとめ

  • if文 は、条件によって処理を切り替える構文。
  • 文字列・数値・ファイルの存在チェックなどに幅広く利用できる。
  • elif と else を使うことで、複雑な条件にも対応可能。
  • [ 条件 ] の中では 演算子のスペース に注意!
  • スクリプトの柔軟性と安全性を高める重要な構文。

💬 if文をマスターすれば、スクリプトの“自律的な判断”ができるようになります。
 次のステップでは、for文・while文 などの「繰り返し処理」と組み合わせて、より強力な自動化スクリプトに挑戦していきましょう!