シェルのif文で複数条件を指定

シェルのif文で複数条件を指定

シェルスクリプトの if 文で複数の条件を指定する方法について説明します。
複数の条件を組み合わせる際には、主に以下の3つの方法があります。

1. 論理AND (&&) の使用
2. 論理OR (||) の使用
3. 複数の if 文を組み合わせる

1. 論理AND (&&) の使用

論理ANDを使用して複数の条件がすべて真である場合に処理を実行したい場合、&& を使います。
以下はその基本的な構文です。

if [ 条件1 ] && [ 条件2 ]; then
  # 条件1 と 条件2 の両方が真のときに実行する処理
fi

例えば、ファイルが存在し、かつそのファイルが読み取り可能であるかどうかを確認するスクリプトは次のようになります。

file="example.txt"
if [ -e "$file" ] && [ -r "$file" ]; then
  echo "$file exists and is readable"
else
  echo "$file does not exist or is not readable"
fi

2. 論理OR (||) の使用

論理ORを使用していずれかの条件が真であれば処理を実行したい場合、|| を使います。
基本的な構文は次の通りです。

if [ 条件1 ] || [ 条件2 ]; then
  # 条件1 または 条件2 のいずれかが真のときに実行する処理
fi

例えば、ファイルが存在するか、またはディレクトリが存在するかを確認するスクリプトは次のようになります。

file="example.txt"
dir="example_dir"
if [ -e "$file" ] || [ -d "$dir" ]; then
  echo "$file exists or $dir is a directory"
else
  echo "Neither $file exists nor $dir is a directory"
fi

3. 複数の if 文を組み合わせる

複数の if 文をネストさせたり、組み合わせたりして複雑な条件を評価することも可能です。
以下の例では、複数の条件を使って処理を分岐させています。

if [ -e "file1.txt" ]; then
  if [ -r "file1.txt" ]; then
    echo "file1.txt exists and is readable"
  else
    echo "file1.txt exists but is not readable"
  fi
else
  echo "file1.txt does not exist"
fi

これらの方法を使うことで、シェルスクリプトにおいて複雑な条件分岐を実装することができます。
各方法の適切な使い方を理解することで、より柔軟で強力なスクリプトを作成することが可能です。