シェルスクリプト 条件式の評価 

どのプログラミング言語においても条件式で条件分岐したり、繰り返し処理したりすると思います。

シェルスクリプトにも同様な機能がありますが、少し、他のプログラミング言語とは異なります。

本記事では、シェルスクリプトの条件式の評価について紹介します。

数値の比較

数値の比較では、他のプログラミング言語は、等号、不等号(<,>,<=,>=,==)を用います。

しかし、シェルスクリプトでは、異なります。

実際は、できる方法もありますが、またそれは別記事で紹介します。

条件式実行結果
数値1 -eq 数値2数値1と数値2が等しければ真
数値1 -ge 数値2数値1が数値2より大きい、もしくは等しければ真
数値1 -gt 数値2数値1が数値2より大きければ真
数値1 -le 数値2数値1が数値2より小さい、もしくは等しければ真
数値1 -lt 数値2数値1が数値2未満であれば真
数値1 -ne 数値2数値1と数値2が等しくなければ真

文字列の比較

文字列の比較では、他のプログラミング言語は、等しい場合は==で、等しくない場合は!=が多いと思います。

シェルスクリプトでは、以下のようになります。

条件式実行結果
-n 文字列文字列の長さが0より大きければ真
-z 文字列文字列の長さが0であれば真
文字列1 = 文字列22つの文字列が等しければ真
文字列1 !=文字列22つの文字列が等しくなければ真

論理結合

他のプログラミング言語では、論理積は&&,論理和は||が多いと思います。

シェルスクリプトでは、以下のようになります。

条件式実行結果
! 条件条件式が偽であれば真
条件1 -a 条件2条件1と条件2の両方が真であれば真(AND)
条件1 -o 条件2条件1か条件2のいずれかが真であれば真(OR)

他にもシェルスクリプトでは、他の言語にはあまり見られない、或いはコード量が増えてしまうことも簡単にできる方法があります。

ファイルの形式

条件式実行結果
-f ファイルファイルがあれば真
-d ディレクトリディレクトリがあれば真
-r ファイルファイルが存在、かつ読み込み可能であれば真
-w ファイルファイルが存在、かつ書き込み可能であれば真
-x ファイルファイルが存在、かつ実行可能であれば真
-s ファイルサイズ0より大きいファイルがあれば真
-L ファイルシンボリックリンクであるファイルがあれば真

ファイルの特性

条件式実行結果
-e ファイルファイルがあれば真
ファイル1 -nt ファイル2ファイル1がファイル2より修正時刻が新しければ真
ファイル1 -ot ファイル2ファイル1がファイル2より修正時刻が古ければ真

まとめ

シェルスクリプトでは、他のプログラミング言語とは異なる条件式を用います。

実は、ある方法では他のプログラミング言語と同じように条件式を用いることができます。