【Linux入門】if文による条件分岐の方法をわかりやすく解説!

Linuxのシェルスクリプトには他のプログラミング言語同様if文による条件分岐が可能です。

ここではシェルスクリプトで使用するif文について以下の内容で解説していきます。

・if文とは
・if文で使用できる演算子
・if文で文字列の比較
・if文で数値の比較
・if文でファイルのチェック

この記事ではif文ついてわかりやすく解説していますので、ぜひ使い方を覚えておきましょう!

if文とは

if文とはプログラムにおいて、処理を分岐するために使用する機能になります。

たとえば、

「文字列が一致しているかどうかで処理を分岐したい。」

「年齢が20歳以上と以下で処理を分岐したい。」

「ファイルの存在チェックを行い、存在するならファイルを読み込みたい。」

などの用途でif文はよく使用されます。

シェルスクリプトでのif文の書式は以下となります。

if [条件式]; then
  分岐処理1
fi

また、分岐処理1に該当しない場合の処理を実行したい場合は「else」を指定します。

if [条件式]; then
  分岐処理1
else
  分岐処理2
fi

分岐処理を複数に分けたい場合は「elif」を指定します。通常のプログラミング言語では「else if」ですが、シェルスクリプトの場合は省略されています。

if [条件式1]; then
  分岐処理1
elif [条件式2]; then
  分岐処理2
else
  分岐処理3
fi

if文で使用できる演算子

ここでは、if文で使用できる演算子を紹介します。

文字列の比較

演算子説明
文字列文字列の長さが1以上だったら真
-n 文字列文字列の長さが1以上だったら真
-z 文字列文字列の長さが0の場合は真
文字列1 = 文字列22つの文字列が等しい場合は真
文字列1 != 文字列22つの文字列が等しくない場合は真

数値の比較

演算子説明
数値1 -eq 数値2数値1と数値2が等しい場合は真
数値1 -ne 数値2数値1と数値2が等しくなければ真
数値1 -ge 数値2数値1が数値2と等しい、又は大きい場合は真
数値1 -gt 数値2数値1が数値2より大きい場合は真
数値1 -lt 数値2数値1が数値2より小さい場合は真
数値2 -le 数値2数値1と数値2が等しい又は小さい場合は真

ファイルチェック

演算子説明
-d ファイル名ファイル名がディレクトリ名なら真
-f ファイル名ファイルの場合は真
-e ファイル名ファイルが存在するなら真
-L ファイル名シンボリックリンクなら真
-r ファイル名読み取り可能なら真
-w ファイル名書き込み可能なら真
-x ファイル名実行可能なら真
-s ファイル名ファイルサイズが0でなければ真
ファイルA -nt ファイルBファイルが等しければ真
ファイルA -ot ファイルBファイルAがファイルBより古い場合は真

if文を使ってみよう

文字列の比較

ここではif文で文字列同士の比較をしてみましょう。

以下では2つの文字列を比較して、一致しなければ真の処理が実行されます。

#!/usr/bin/bash

STR1=samurai
STR2=engineer

if [ $STR1 != $STR2 ]; then
  echo '文字列は等しくありません。'
fi

実行結果:

文字列は等しくありません。

STR1とSTR2は等しく無いので「文字列1 != 文字列2」の条件式は真となり、真の処理であるechoでの出力処理が実行されます。

数値の比較

続けて数値の比較処理を実施してみましょう。

以下の処理では変数NUM1、NUM2、NUM3の値をそれぞれ比較しています。

#!/usr/bin/bash
NUM1=100
NUM2=200
NUM3=100

if [ $NUM1 -eq $NUM2 ]; then
  echo 'NUM1とNUM2は等しくない'
elif [ $NUM1 -eq $NUM3 ]; then
  echo 'NUM1とNUM3は等しい'
else
  echo 'どちらにも当てはまらない'
fi

実行結果:

NUM1とNUM3は等しい

このシェルスクリプトではNUM1とNUM2、NUM3をそれぞれ比較し、数値が等しかった場合は分岐処理が実行されます。

ファイルのチェック

最後にファイルをチェックする条件分岐について見ていきましょう。

以下の処理ではファイルが存在するか確認しています。

#!/usr/bin/bash

if [ ! -f /home/nao/shell/test.txt ]; then
  echo 'ファイルが存在しません'
else
  echo 'ファイルが存在します'
  cat /home/nao/shell/test.txt
fi

実行結果:

ファイルが存在します
samurai engineer blog

ファイルが存在したので、echoで文字列を出力し、catでファイルの内容を表示しています。

まとめ

ここでは、Linuxのシェルスクリプトでif文による条件分岐について解説しました。

  • if文とは
  • if文の使い方
  • if文で使用できる演算子
  • if文で文字列の比較
  • if文で数値の比較
  • if文でファイルのチェック

シェルスクリプトの中でもif文は使用頻度が高い処理ですので、使い方はしっかりと理解しておきましょう。

もし、if文の使い方を忘れてしまったら、この記事を思い出してくださいね!

Writer

侍エンジニア編集部

株式会社SAMURAI

侍エンジニアは「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。プログラミングに役立つ情報や有用な情報を発信していきます。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI ENGINEER Plus

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら