Linux

【Linux】シェルスクリプトif文のオプションまとめ

シェルスクリプトのif文のオプション

Linuxのシェルスクリプトにおける、if文のオプションをまとめてみました。

オプションを忘れた際に、振り返っていただければと思います。

文字列比較オプション

オプション意味
文字列A = 文字列B文字列Aと文字列Bが等しければ真
文字列A != 文字列B文字列Aと文字列Bが等しくなければ真
文字列A
- n 文字列A
文字列Aの長さが0より大きければ真
-z 文字列A文字列Aの長さが0であれば真

文字列A = 文字列B

# 文字列Aが文字列Bと等しい場合
if [ ${A} = ${B} ]; then
  # 処理
fi

文字列A != 文字列B

# 文字列Aが文字列Bと異なる場合
if [ ${A} != ${B} ]; then
  # 処理
fi

文字列A または - n 文字列A

# 文字列Aの長さが0より大きい場合
if [ ${A} ]; then
  # 処理
fi

# 文字列Aの長さが0より大きい場合
if [ - n ${A} ]; then
  # 処理
fi

-z 文字列A

# 文字列Aの長さが0の場合
if [ - z ${A} ]; then
  # 処理
fi

数値比較オプション

オプション意味覚え方
数値A -eq 数値B数値Aと数値Bが等しければ真equal ⇒ -eq
数値A -ne 数値B数値Aと数値Bが異なれば真not equal ⇒ -ne
数値A -lt 数値B数値A < 数値Bであれば真less than ⇒ -lt
数値A -le 数値B数値A ≦ 数値Bであれば真less than or equal ⇒ -le
数値A -gt 数値B数値A > 数値Bであれば真greater than ⇒ -gt
数値A -ge 数値B数値A ≧ 数値Bであれば真greater than or equal ⇒ -ge

数値A -eq 数値B

# 数値Aと数値Bが等しい場合
if [ ${A} -eq ${B} ]; then
  # 処理
fi

数値A -ne 数値B

# 数値Aと数値Bが異なる場合
if [ ${A} -ne ${B} ]; then
  # 処理
fi

数値A -lt 数値B

# 数値A < 数値Bである場合
if [ ${A} -lt ${B} ]; then
  # 処理
fi

数値A -le 数値B

# 数値A ≦ 数値Bである場合
if [ ${A} -le ${B} ]; then
  # 処理
fi

数値A -gt 数値B

# 数値A > 数値Bである場合
if [ ${A} -gt ${B} ]; then
  # 処理
fi

数値A -ge 数値B

# 数値A ≧ 数値Bである場合
if [ ${A} -ge ${B} ]; then
  # 処理
fi

ファイル・ディレクトリ確認オプション

オプション意味
-d ディレクトリAディレクトリAがディレクトリならば真
-f ファイルAファイルAが普通のファイルならば真
-s ファイルAファイルAのサイズが0より大きければ真
-e ファイルAファイルAが存在するならば真
-r ファイルAファイルAが読み取り可能ならば真
-w ファイルAファイルAが書き込み可能ならば真
-x ファイルAファイルAが実行可能ならば真

-d ディレクトリA

# ディレクトリAがディレクトリである場合
if [ -d ${DIR_A} ]; then
  # 処理
fi

-f ファイルA

# ファイルAが普通のファイルである場合
if [ -f ${FILE_A} ]; then
  # 処理
fi

-s ファイルA

# ファイルAのサイズが0より大きい場合
if [ -s ${FILE_A} ]; then
  # 処理
fi

-e ファイルA

# ファイルAが存在する場合
if [ -e ${FILE_A} ]; then
  # 処理
fi

-r ファイルA

# ファイルAが読み取り可能な場合
if [ -r ${FILE_A} ]; then
  # 処理
fi

-w ファイルA

# ファイルAが書き込み可能な場合
if [ -w ${FILE_A} ]; then
  # 処理
fi

-x ファイルA

# ファイルAが実行可能な場合
if [ -x ${FILE_A} ]; then
  # 処理
fi

引数の比較オプション

オプション意味
$#実行時に指定された引数の数
$1実行時に指定された1番目の引数
$n実行時に指定されたn番目の引数

$#

# 実行時に指定された引数の数が2つの場合
if [ $# -eq 2 ]; then
  # 処理
fi

# 実行時に指定された1番目の引数が1の場合
if [ $1 -eq 1 ]; then
  # 処理
fi

実行結果の比較オプション

オプション意味
$?直前のコマンドの実行結果

$?

# 直前のコマンドの実行結果が0の場合
if [ $? -eq 0 ]; then
  # 処理
fi

まとめ

今回は、シェルスクリプトのif文のオプションをまとめてみました。

忘れがちなオプションなので、都度思い出すことができる記事になれば幸いです。