MJUN Tech Note

Shell Scriptで使う条件分岐 test

本稿ではShell Scriptで条件分岐に用いられる、testコマンドについて書く。 どのような条件分岐が可能であるかを、testコマンドのオプションをベースに列挙する。 シェルスクリプトでの利用を想定しているため、[ ]での記述を行う。

条件内容
-a fileファイルが存在すればtrue
-d fileファイルがディレクトリならtrue
-e fileファイルが存在すればtrue
-f fileファイルが通常ファイルならtrue
-h fileファイルがシンボリックリンクならtrue
-r fileファイルが読み込み可能ならtrue
-s fileファイルサイズが0より大きければtrue
-w fileファイルが書き込み可能ならtrue
-x fileファイルが実行可能ならtrue
a -nt baがbより更新日時が新しければtrue
a -ot baがbより更新日時が古ければtrue
-z strstrが空文字ならtrue
-n strstrが空文字でないならtrue
str1 = str2str1,str2が同じならtrue
str1 == str2str1,str2が同じならtrue
str1 != str2str1,str2が異なるならtrue
str1 < str2str1がstr2よりも辞書順で前ならtrue
str1 > str2str1がstr2よりも辞書順で後ならtrue
a -eq ba,bの数字が等しければtrue
a -ne ba,bの数字が等しくなければtrue
a -lt baがb以下ならtrue
a -le baがb未満ならtrue
a -gt baがbより大きければtrue
a -ge baがb以上ならtrue

参考

書籍

[改訂第3版]シェルスクリプト基本リファレンス ──#!/bin/shで、ここまでできる (WEB+DB PRESS plus)