
新Linux入門|シェルスクリプトで条件分岐を行う!if文の書き方と実例
シェルスクリプトを使って自動化を進めていくと、「もしファイルが存在したら実行する」「もし数値が一致したら次の処理を行う」といった“条件分岐”が必要になります。
そんなときに活躍するのが if文(条件分岐構文) です。
if文を使えば、スクリプトの中で状況に応じて処理を切り替えることができ、より柔軟で賢いスクリプトを作ることができます。
ここでは、if文の基本構造と使い方をわかりやすく解説します。

⚙️ if文の基本構造
if文は、与えられた条件が「真(true)」であれば特定の処理を実行し、「偽(false)」なら別の処理を実行する仕組みです。
📘 基本書式
if [ 条件式 ]; then
コマンド(条件が真の場合に実行)
elif [ 別の条件式 ]; then
コマンド(別の条件が真の場合に実行)
else
コマンド(すべての条件が偽の場合に実行)
fi💬 最後の fi は、if文の終わりを示すキーワードです(ifの逆ですね!)。
🔍 if文で使える主な演算子一覧
条件式の中では、文字列・数値・ファイル に対するチェックを行うことができます。
以下の表に、よく使う演算子をまとめました。
📝 文字列の比較演算子
| 演算子 | 説明 |
|---|---|
| -n 文字列 | 文字列の長さが1以上なら真 |
| -z 文字列 | 文字列の長さが0なら真 |
| 文字列1 = 文字列2 | 2つの文字列が等しい場合は真 |
| 文字列1 != 文字列2 | 2つの文字列が等しくない場合は真 |
📘 例
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文 などの「繰り返し処理」と組み合わせて、より強力な自動化スクリプトに挑戦していきましょう!
