Linuxのシェルスクリプトif文の使い方!条件分岐させる方法など解りやすく解説!

Linux if文を作成する方法を 条件分岐の違いやパターン別・演算子別で表を交えながら分かりやすくまとめました。基本的な書式ルールもありますが、Linux ifを使用する上で理解して置いたら助かる情報をお届けします。

目次

  1. 1Linuxのシェルスクリプト(bash)のif文について
  2. if文って何?
  3. if文の書式について
  4. 文字列を比較する演算子
  5. 数値を比較する演算子
  6. ファイルチェックできる演算子
  7. 2Linuxのif文のパターン別の使い方
  8. 文字列を比べる場合
  9. 数値を比べる場合
  10. コマンド実行NOT(否定)条件について
  11. 3Linuxのif文でファイルをチェックしよう
  12. -eオプションを使ってファイル探し
  13. ファイルの比較条件
  14. AND・OR条件を使う
  15. 4Linuxのif文で条件分岐させてみよう!

Linuxのシェルスクリプト(bash)のif文について

Linuxとはパソコンを動かしているOS(オペレーションシステム)の一つです。有名なOSとして良く耳にするのがWindowsや、MacOSがあります。携帯電話のOSではiosやAndroidがあります。

LinuxはUnix系OSの為、シェルスクリプト言語を使用します。Unixとは、コンピューター用のマルチタスク(複数のプログラムを切り替えて実行できるシステム)・マルチユーザー(1台のパソコンを同時に複数の人が利用できるOS)のOSの一種です。

シェルスクリプトとは、コマンドを書いて何かの処理をさせるプログラムです。またLinuxシェルスクリプトはbashですbashとは、シェルの一種です。シェルとはコマンドを受けて意図した処理を実行するプログラムの事を言います。

Windows10でLinuxを使う方法!WSLをインストールする方法を解説!
Windows10ではLinuxを正式に使うことができるようになりました。インストール方法は...

if文って何?

Linuxのif文とは、処理を分岐させる事ができる機能です。まさしく「if=もし~ならば」という条件で処理を分岐させたい時に使えます。「AがBなら処理を分岐したい」「Aを含む場合処理を分岐したい」「Aが~なら処理を分岐したい」という様な感じです。

if文の書式について

if文の書式は分岐したい条件に応じたシェルスクリプト(bash)を作成していきます。if文には3パターンの書式があります。

条件が真の場合の書式 if then fi
条件に該当しない場合の書式 if then else fi
分岐条件が複数の場合の書式 if then elif then else fi
また、ただ単に条件を分岐させる事から、文字列や数値を比べたり、ファイルチェックを行うプログラムを作成する事が可能です。

条件分岐の方法

「Aが~なら分岐処理を行う」という様な、条件を付けた処理を行いたい時にif文を使用します。

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

該当しない場合はelse

上記の分岐条件を基準としたシェルスクリプトに「該当しない場合は~」という分岐条件を追加したい場合は「else」コマンドを入れます。

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

分岐処理が複数の場合はelif

Linuxのif文は「if条件式」「then」1行で記入していく必要がありますただし、複数の条件分岐がある場合に「then」の記入だけで1行消費すると可読性が低下します。その為、複数の条件分岐がある場合は、if文を記入するときに;(セミコロン)を活用し、1行でif条件式と「then」を記入していく方が良いです。

また、分岐処理が複数になる場合には「else」ではなく「elif」を追加して分岐処理していきます。

  1. if[条件式];then
  2.  分岐処理1
  3. elif
  4.  分岐処理2
  5. else
  6.  分岐処理3
  7. fi

文字列を比較する演算子

Linuxのif文では文字列を比較する事が可能です。比較内容によってシェルスクリプト(bash)に記載するときの演算子は5種類あります。
 

    文字列   文字列の長さが1以上だったら真
 -n文字列   文字列の長さが1以上だったら真
 -Z文字列  文字列の長だ0だったら真 
 文字列1=文字列2   2つの文字列が等しい場合は真
 文字列1!=文字列2   2つの文字列が等しくない場合は真 

数値を比較する演算子

Linuxのif文で数値を比較する時は、数値を計算して比較するのではなく、数値を条件で比較する演算子を使用します。

数値1 -eq数値2 数値1と数値2が等しければ真
数値1 -ne数値2 数値1と数値2が等しくなければ真 
数値1 -gt数値2 数値1が数値2より大きければ真
数値1 -ge数値2 数値1が数値2と等しい、もしくは大きければ真
数値1 -lt数値2 数値1が数値2より小さければ真
数値1 -le数値2  数値1が数値2と等しい、もしくは小さければ真

ファイルチェックできる演算子

Linuxのif文でファイルチェックを行う為の演算子は下記の10種類があります。

 -aファイル名 ファイルがあれば真
 -bファイル名 ブロックス特殊ファイルなら真
 -cファイル名  キャラクター特殊ファイルなら真 
 -dファイル名 ファイル名がディレクトリなら真 
 -eファイル名  ファイルが存在するなら真
 -fファイル名 通常ファイルの場合は真 
 -gファイル名 SGID(特殊なアクセス権)なら真
 -Gファイル名 実行グループIDによる所有者なら真
  -hファイル名 シンボクリックなら真(-Lでも可能)
 -kファイル名 ステッキービットが設定されていれば真
 -Lファイル名 シンボリックリンクなら真(-hでも可能)
 -oファイル名 実行グループIDによる所有者なら真
 -pファイル名 名前付きパイプなら真
 -rファイル名  読み取り可能ファイルなら真
 -sファイル名 ファイルサイズが0より大きければ真
 -Sファイル名 ソケットであれば真
 -t FD FDが端末でオープンされていたら真
 -uファイル名 SUID(特殊なアクセス権)なら真
 -wファイル名 書き込み可能ファイルなら真
 -xファイル名  実行可能ファイルなら真
 -zファイル名 文字列長が0なら真
 ファイルA-ntファイルB  ファイルAがファイルBより新しければ真
 ファイルA-otファイルB ファイルAがファイルBより古い場合は真 

関連するまとめ

関連するキーワード

この記事のライター
SNOW.6
誰が読んでも読みやすく、分かりやすい記事作成を心がけています。

人気の記事

新着まとめ