シェルスクリプト if




シェルスクリプト中の処理の条件分岐には 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 条件で結ぶ