Bashのif/else条件分岐 - テスト、比較、ファイルチェック

if/elif/else、文字列・数値・ファイルのテスト演算子、[[ ]]拡張テスト構文を使ったbashの条件文をマスターします。

Control Flow

詳細な説明

Bashの条件文

条件文はテストと比較に基づいて実行の流れを制御します。Bashはif/elif/else構文と強力なテスト演算子を提供します。

ファイルテスト演算子

-f FILE    # ファイルが存在し通常ファイルである
-d DIR     # ディレクトリが存在する
-e PATH    # パスが存在する(任意のタイプ)
-r FILE    # ファイルが読み取り可能
-w FILE    # ファイルが書き込み可能
-x FILE    # ファイルが実行可能

文字列比較

[ "$str" = "value" ]     # 等しい
[ "$str" != "value" ]    # 等しくない
[ -z "$str" ]            # 文字列が空
[ -n "$str" ]            # 文字列が空でない

数値比較

[ "$a" -eq "$b" ]   # 等しい
[ "$a" -ne "$b" ]   # 等しくない
[ "$a" -lt "$b" ]   # より小さい
[ "$a" -gt "$b" ]   # より大きい

拡張テスト [[ ]]

# パターンマッチング
if [[ "$filename" == *.txt ]]; then
  echo "テキストファイル"
fi

# 正規表現マッチング
if [[ "$email" =~ ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ ]]; then
  echo "有効なメール"
fi

# 論理演算子
if [[ "$age" -ge 18 && "$country" == "US" ]]; then
  echo "対象"
fi

ユースケース

条件文はすべての非自明なbashスクリプトで使用されます。典型的な使用例は、処理前に必要なファイルやディレクトリが存在するかの確認、ユーザー入力とコマンドライン引数の検証、環境変数に基づく分岐ロジック(本番環境vs開発環境)、終了コードチェックによるエラーハンドリングの実装です。

試してみる — Bash Cheat Sheet

フルツールを開く