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開発環境)、終了コードチェックによるエラーハンドリングの実装です。