Shell

シェルスクリプトの入門編7:if文について

条件分岐でよく使われるifについてまとめます。

基本的な文法

if [ 条件式 ]; then 処理 fiの形式で記述します。

注意しなければいけないのは、

  1. [の前後にスペースを入れること
  2. ]の前にスペースを入れること
  3. 条件式の各引数はスペースで区切ること
  4. ]の後ろに;を入れること

です。

例:

色々な判定方法

文字列の判定

文字列の条件判定式のリストはこちらです。

演算子 内容
str1 == str2 str1とstr2が同じ
str1 != str2 str1とstr2が同じではない
-n str1 str1が空文字ではない
-z str2 str2が空文字である
str1 < str2 str1がstr2よりも辞書的に前である
str1 > str2 str1がstr2よりも辞書的に後である

if_str_eq.sh

if_str_empty.sh

if_str_before_after.sh

><'(シングルクオート)で囲まなければならないので注意です。

数値の判定

演算子 内容
int1 -eq int2 int1とint2が等しい
int1 -lt int2 int1がint2よりも小さい(less than)
int1 -le int2 int1がint2以下(less equal)
int1 -gt int2 int1がint2よりも大きい(greater than)
int1 -ge int2 int1がint2異常(greater equal)

if_int_eq.sh

if_int_lt.sh

if_int_gt.sh

ファイルやディレクトリの判定

演算子 内容
-f file fileが存在し、通常のファイルである
-d file fileが存在し、ディレクトリである
file1 -nt file2 file1がfile2よりも新しい
file1 -ot file2 file1がfile2よりも古い

if_file_exist.sh

if_dir_exist.sh

if_file_new.sh

if_file_old.sh

NOT, AND, OR条件

演算子 内容
条件式1 -a 条件式2 条件式1と条件式2の両方が真の場合に真(AND)
条件式1 -o 条件式2 条件式1と条件式2のどちらかが真の場合に真(OR)
! 条件式 条件式の真偽を逆にする(NOT)

if_and.sh

if_or.sh

if_not.sh

まとめ

  • ifの条件式の文法は間にスペースを入れることに注意する
  • 文字列の一致には==を使い、数値の一致には-eqを使う
  • ファイルが存在するか確かめる時は-f演算子を、ディレクトリが存在するか確かめるときは-d演算子を使う
  • ANDは条件式1 -a 条件式2、ORは条件式1 -o 条件式2、NOTは! 条件式で行う

-Shell

© 2023 Shiro's secret base