はじめに
ちょっとしたことはシェルで済ませるけど、条件分岐をするのに使う test
コマンドで使える演算子をたまに忘れるのでメモしておく。
文字列を条件判断する演算子
演算子 |
条件式 |
説明 |
-z |
-z 文字列 |
文字列が空文字列なら真 |
-n |
-n 文字列 |
文字列が空文字列でなければ真 |
= |
文字列1 = 文字列2 |
文字列1と文字列2が同じなら真 |
== |
文字列1 == 文字列2 |
文字列1と文字列2が同じなら真。※bash のみ |
!= |
文字列1 != 文字列2 |
文字列1と文字列2が異なるなら真 |
< |
文字列1 < 文字列2 |
文字列1が辞書順で文字列2より小さければ真 |
> |
文字列1 > 文字列2 |
文字列1が辞書順で文字列2より大きければ真 |
数値を条件判断する演算子
演算子 |
条件式 |
説明 |
-eq |
数値1 -eq 数値2 |
数値1と数値2が等しければ真 |
-ne |
数値1 -ne 数値2 |
数値1と数値2が等しくなければ真 |
-lt |
数値1 -lt 数値2 |
数値1が数値2より小さければ真 |
-le |
数値1 -le 数値2 |
数値1が数値2以下ならば真 |
-gt |
数値1 -gt 数値2 |
数値1が数値2より大きければ真 |
-ge |
数値1 -ge 数値2 |
数値1が数値2以上ならば真 |
ファイルを条件判断する演算子
演算子 |
条件式 |
説明 |
-d |
-d ファイル |
ファイルがディレクトリなら真 |
-e |
-e ファイル |
ファイルが存在するなら真 |
-f |
-f ファイル |
ファイルが通常ファイルなら真 |
-g |
-g ファイル |
ファイルがセットグループ ID されていたら真 |
-h |
-h ファイル |
ファイルがシンボリックリンクなら真 |
-k |
-k ファイル |
ファイルのスティッキービットがセットしていたら真 |
-p |
-p ファイル |
ファイルが名前付きパイプなら真 |
-r |
-r ファイル |
ファイルが読み込み可能なら真 |
-s |
-s ファイル |
ファイルサイズが 0 よりも大きければ真 |
-t |
-t ファイルディスクリプタ |
ファイルディスクリプタが端末なら真 |
-u |
-u ファイル |
ファイルがセットユーザー ID されていたら真 |
-w |
-w ファイル |
ファイルが読み込み可能なら真 |
-x |
-x ファイル |
ファイルが実行可能なら真 |
-S |
-S ファイル |
ファイルがソケットなら真 |
-N |
-N ファイル |
ファイルの更新日時がアクセス日時以降なら真 |
-nt |
ファイル1 -nt ファイル2 |
ファイル1の更新日時がファイル2の更新日時より新しかったら真 |
-ot |
ファイル1 -ot ファイル2 |
ファイル1の更新日時がファイル2の更新日時より古かったら真 |
-ef |
ファイル1 -ef ファイル2 |
ファイル1とファイル2の i ノードが同じなら真 |
演算子 |
条件式 |
説明 |
! |
! 条件式 |
条件式の評価結果を否定する。つまり条件式が偽なら真 |
-a |
条件式1 -a 条件式2 |
条件式1と条件式2が両方とも真なら真 |
-o |
条件式1 -o 条件式2 |
条件式1と条件式2のどちらかが真なら真 |