シェルスクリプト中の処理の条件分岐には if を用いる。
if では、ある条件が真の場合に then の処理を実行し、
偽の場合に else の処理を実行する。
例では /tmp/date.txt が存在し空でなければ標準出力に OK を出力し、
そうでなければ、/tmp/date.txt ファイルを作成しスクリプト実行時の時刻を書き込む。
AND 条件は -a で実現。
if [ -f /tmp/date.txt -a -s /tmp/date.txt ] ; then echo OK else date > /tmp/date.txt fi
使用できる条件式は次の通り。
○文字列条件式 文字列1 = 文字列2 文字列1 と文字列2 が一致なら真 文字列1 != 文字列2 文字列1 と文字列2 が一致しないなら真 -n 文字列1 文字列1 が空 (null) でなければ真 -z 文字列1 文字列1 が空 (null) であれば真
○数式条件式 整数1 -eq 整数2 整数1 と整数2 が等しければ真 (整数1 == 整数2) 整数1 -ge 整数2 整数1 が整数2 以上であれば真 (整数1 >= 整数2) 整数1 -gt 整数2 整数1 が整数2 よりも大きければ真 (整数1 > 整数2) 整数1 -le 整数2 整数1 が整数2 以下であれば真 (整数1 <= 整数2) 整数1 -lt 整数2 整数1 が整数2 よりも小さければ真 (整数1 < 整数2) 整数1 -ne 整数2 整数1 と整数2 が等しくなければ真 (整数1 != 整数2)
○ファイル条件式 -d ファイル1 ファイル1 がディレクトリであれば真 -f ファイル1 ファイル1 が通常ファイルであれば真 -r ファイル1 ファイル1 がスクリプト実行ユーザで読み出し可能であれば真 -s ファイル1 ファイル1 が空ファイルでなければ真 -w ファイル1 ファイル1 がスクリプト実行ユーザで書き込み可能であれば真 -x ファイル1 ファイル1 がスクリプト実行ユーザで実行可能であれば真
○論理演算子 ! 直後に続く条件式の結果を否定する -a 2 つの条件式を AND 条件で結ぶ -o 2 つの条件式を OR 条件で結ぶ