【Linux】シェルスクリプトで使える比較演算子の使い方まとめ

シェルスクリプトで使える比較演算子の使い方まとめ
目次

対象

以下のようなことがしたい場合に役立ちます。

  • シェルスクリプトで使える比較演算子が知りたい
  • 文字列の比較がしたい
  • 数値の比較がしたい
  • ファイルが存在するか判定したい

シェルスクリプトで使える比較演算子一覧

Linuxのシェルスクリプトでは、様々な比較演算子が利用できます。
これらを上手に組み合わせることで、条件分岐やループなどの制御構造を構築することができます。
以下に、よく使用される比較演算子をまとめました。

数値比較演算子

演算子説明
数値A -eq 数値B数値Aと数値Bが等しければ真
数値A -ne 数値B数値Aと数値Bが等しくなければ真
数値A -gt 数値B数値Aが数値Bより大きければ真
数値A -lt 数値B数値Aが数値Bより小さければ真
数値A -ge 数値B数値Aが数値B以上であれば真
数値A -le 数値B数値Aが数値B以下であれば真
if [ "$A" -eq "$B" ]; then
    echo "変数 A と B は等しいです"
fi
if [ "$A" -ne "$B" ]; then
    echo "変数 A と B は等しくありません"
fi
if [ "$A" -gt "$B" ]; then
    echo "変数 A は変数 B より大きいです"
fi
if [ "$A" -lt "$B" ]; then
    echo "変数 A は変数 B より小さいです"
fi
if [ "$A" -ge "$B" ]; then
    echo "変数 A は変数 B 以上です"
fi
if [ "$A" -le "$B" ]; then
    echo "変数 A は変数 B 以下または等しいです"
fi

文字列比較演算子

演算子説明
文字列1 = 文字列str2文字列1と文字列2が等しければ真
文字列1 != 文字列str2文字列1と文字列2が等しくなければ真
-z 文字列文字列の長さが0であれば真
-n 文字列文字列の長さが0より大きければ真
if [ "$str1" = "$str2" ]; then
    echo "文字列 str1 と str2 は等しいです"
fi
if [ "$str1" != "$str2" ]; then
    echo "文字列 str1 と str2 は等しくありません"
fi
if [ -z "$str" ]; then
    echo "文字列 str は長さがゼロです"
fi
if [ -n "$str" ]; then
    echo "文字列 str は長さがゼロでないです"
fi

ファイルチェック演算子

演算子説明
-e ファイルファイルであれば真
-f ファイル通常ファイルなら真
-r ファイル読み取り可能であれば真
-w ファイル書き込み可能であれば真
-x ファイル実行可能であれば真
-d ファイルディレクトリであれば真
-s ファイルファイルが存在し、空でなければ真
-L ファイルファイルがシンボリックリンクならば真
ファイル1 -nt ファイル2ファイル1がファイル2より新しければ真
ファイル1 -ot ファイル2ファイル1がファイル2より古ければ真
if [ -e "$file" ]; then
    echo "ファイル file は存在します"
fi
if [ -f "$file" ]; then
    echo "ファイル $file は通常のファイルです"
fi
if [ -r "$file" ]; then
    echo "ファイル file は読み込み可能です"
fi
if [ -w "$file" ]; then
    echo "ファイル file は書き込み可能です"
fi
if [ -x "$file" ]; then
    echo "ファイル file は実行可能です"
fi
if [ -d "$dir" ]; then
    echo "ディレクトリ $dir は存在します"
fi
if [ -s "$file" ]; then
    echo "ファイル $file はゼロバイトではありません"
fi
if [ ! -L "$file" ]; then
    echo "ファイル $file はシンボリックリンクではありません"
fi
if [ "$file1" -nt "$file2" ]; then
    echo "ファイル $file1 はファイル $file2 より新しいです"
fi
if [ "$file1" -ot "$file2" ]; then
    echo "ファイル $file1 はファイル $file2 より古いです"
fi

条件式の結合

演算子説明
条件1 -a 条件2両方の条件式が真であれば真(and条件)
条件1 -o 条件2いずれかの条件式が真であれば真(or条件)
if [ -e "$file" -a -r "$file" ]; then
    echo "ファイル $file は存在し、読み込み可能です"
fi
if [ -e "$file" -o -w "$file" ]; then
    echo "ファイル $file は存在するか、書き込み可能です"
fi
よかったらシェアしてね!
  • URLをコピーしました!
目次