条件評価

例えばファイル「sample.dat」が存在するかどうか調べるとき

test -f sample.dat

または

[ -f sample.dat ]

とできる。-fが演算子でsample.datが被演算子みたいな感じかな?ファイルの存在以外にも、以下のようにいろいろな判断ができるそうだ。「真」というのはその直後に$?の値が0になることだと...思う。

ファイルに関して

評価式 説明
-e ファイル名 ファイルがあれば真
-f ファイル名 ディレクトリなどを除く)ファイルがあれば真
-d ディレクトリ名 ディレクトリがあれば真
-r ファイル名 ファイルが存在し、かつ読み取り可能であれば真
-w ファイル名 ファイルが存在し、かつ書き込み可能であれば真
-x ファイル名 ファイルが存在し、かつ実行可能であれば真
-s ファイル名 ファイルが存在し、かつサイズが0より大きければ真
-L ファイル名 ファイルが存在し、かつシンボリックリンクであれば真
ファイル名1 -nt ファイル名2 ファイル1の修正時刻がファイル2より新しければ真
ファイル名2 -ot ファイル名2 ファイル1の修正時刻がファイル2より古ければ真

数値に関して

評価式 説明
数値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が等しくなければ真

文字列に関して

評価式 説明
文字列 文字列の長さが0以上であれば真
-n 文字列 上記と同じ?
-z 文字列 文字列の長さが0であれば真
文字列1 = 文字列2 2つの文字列が等しければ真
文字列1 != 文字列2 2つの文字列が等しくなければ真

論理演算子みたいなもん

評価式 説明
!条件 条件が偽であれば真
条件1 -a 条件2 条件1と条件2が共に真であれば真
条件1 -o 条件2 条件1と条件2のどちらかが真であれば真