【シェルスクリプト】if、elif、else文で条件分岐を作成する方法

LinuxやMacのシェルスクリプトにおいて、if、elif、else文で条件分岐を作成する方法についてまとめました。

条件分岐を作成(if、elif、else文)

シェルスクリプトでは、if、elif、else文により条件分岐を作成できます。
(他言語でよくあるelse ifではなくelifである点に注意)

書式1

if 条件式①
then 
    処理①

elif 条件式②
then 
    処理②

elif 条件式③
then 
    処理③

else:
    全ての条件式が偽の場合の処理④
fi

まず、if文の条件式①が真であれば処理①を実行して終了します。
偽であった場合は、次の条件式②が真であれば処理②を実行して終了します。(以降elseまで同じ)
elif文の数だけ条件分岐を増やすことが出来ます。
※①~③のどれかの条件式が真となった場合はそれ以降のelif、else文はスルーされます。

書式2

ifとthenを1行で記述することもできます。その場合は;(セミコロン)で区切ります。

if 条件式①; then 
    処理①

elif 条件式②; then 
    処理②

elif 条件式③; then 
    処理③

else:
    全ての条件式が偽の場合の処理④
fi

条件式と演算子

数値の比較演算子

数値同士を比較するときに用いる比較演算子は以下のとおりです。

演算子 説明
数値A -eq 数値B 数値Aと数値Bが等しい場合は真(True)
数値A -ne 数値B 数値Aと数値Bが等しくない場合は真
数値A -gt 数値B 数値Aが数値Bより大きい場合は真
数値A -lt 数値B 数値Aが数値B未満である場合は真
数値A -ge 数値B 数値Aが数値B以上である場合は真
数値A -le 数値B 数値Aが数値B以下である場合は真

文字列の比較演算子

文字列同士を比較するときに用いる比較演算子は以下のとおりです。

演算子 説明
文字列1 = 文字列2 文字列1と文字列2が等しい場合は真(True)
文字列1 != 文字列2 文字列1と文字列2が等しくない場合は真
-z 文字列 文字列の長さが0の場合は真
-n 文字列 文字列の長さが0より大きい場合は真

ファイルを確認するときの演算子

ファイルを確認するときの演算子は以下のとおりです。

演算子 説明
-e ファイルパス 指定したパスがファイルの場合は真
-f ファイルパス ファイルが通常ファイルの場合は真
-r ファイルパス ファイルが読み取り可能の場合は真
-w ファイルパス ファイルが書き込み可能の場合は真
-x ファイルパス ファイルが実行可能の場合は真
-d ディレクトリパス 指定したパスがディレクトリの場合は真
-s ファイルパス ファイルが存在し、空でない場合は真
-L ファイルパス ファイルがシンボリックリンクの場合は真
ファイル1 -nt ファイル2 ファイル1のタイムスタンプがファイル2より新しい場合は真
ファイル1 -ot ファイル2 ファイル1のタイムスタンプがファイル2より古い場合は真

複数の条件式を結合するときの演算子

複数の条件式を結合するときの演算子は以下のとおりです。

演算子 説明
条件1 -a 条件2 条件式1と条件式2が両方とも真の場合は真(and条件)
条件1 -o 条件2 条件式1と条件式2の一方が真の場合は真(or条件)
【シェルスクリプト 】条件式で使える演算子まとめ
シェルスクリプトの条件式で使える演算子まとめについてまとめました。

サンプルコード① 数値の比較で条件分岐


関連記事

シェルスクリプト入門 サンプル集
準備中
【Linuxコマンド入門】主なコマンドとサンプル集
Linuxコマンドの主な使い方とサンプル集について入門者向けにまとめました。
【LinuC】試験対策と例題まとめ
LinuCの試験対策と例題(学習サイト)についてまとめました。

コメント