シェルスクリプトで使うif文の条件式について

if文の条件式の分岐について

シェルスクリプトを作成するときに、文字列や数値の比較して条件分岐する際にif文を利用するケースがあります。その際に条件を比較する時に条件式を使いますが、いつも条件式の条件を忘れてしまいその都度に過去のスクリプトやネット情報を参考にしていましたので、今回のこの記事でまとめてみました

数値の比較 比較演算子

数値に比較には、「-eq」等の比較演算子を使用します。

  • -eq:等しい
  • -ne:等しくない
  • -lt:より小さい
  • -le:以下
  • -gt:より大きい
  • -ge:以上
# 例
if [ "$num" -eq 10 ]; then
  echo "numは10です"
fi

文字列の比較

文字列の比較には「=」等の記号を使用します

  • =:文字列が等しい
  • !=:文字列が等しくない
  • -z:文字列が空かどうか
  • -n:文字列が空でないか
# 例
if [ "$str" = "hello" ]; then
  echo "strはhelloです"
fi

ファイル・ディレクトリの比較

ファイルやディレクトリに関する条件は次のような記号で表現します。

  • -f:通常ファイルか
  • -d:ディレクトリか
  • -r:読み取り可能か
  • -w:書き込み可能か
  • -x:実行可能か
# 例
if [ -d /path/to/directory ]; then
  echo "ディレクトリが存在します"
fi

複数の条件を扱う

if文では、「&&」(論理積 AND)や「||」(論理和 OR)を使って複数の条件を組み合わせることも可能です。

 

論理積(AND)

AND検索:両方の条件が真の場合にのみ実行されます。

# 例
if [ "$var1" -eq 1 ] && [ "$var2" -eq 2 ]; then
  echo "var1は1でvar2は2です"
fi

論理和(OR)

OR検索:どちらか一方の条件が真の場合に実行されます

# 例
if [ "$var1" -eq 1 ] || [ "$var2" -eq 2 ]; then
  echo "var1が1またはvar2が2です"
fi