ShellScript(シェルスクリプト)でのif文の書き方(条件分岐)

ShellScript(シェルスクリプト)でのif文の書き方(条件分岐)ShellScript
ゆうすけ
ゆうすけ

ShellScriptでの条件分岐の書き方が分かりません・・・

資格マフィア
資格マフィア

ShellScriptでの条件分岐は「if文」で書ける。
if文の書き方を解説しよう。


✔️ 本記事のテーマ

 ShellScriptでのif文の書き方(コード付き)

 

✔️ 読者さんへの前置きメッセージ


結論から述べると、
以下のように書くことでShellScriptでif文を書くことができます。

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

 

本記事は「ShellScriptでのif文書き方」について書いています。

 

この記事を読むことで、
「if文の書き方 や ShellScriptのコードの書き方」
をイメージできるようになります。

 

If文を使うことで、特定の条件に沿って処理を振り分けることができます。

 

ShellScriptでの条件分岐も書き方さえ、マスターすれば簡単に行うことができます。

 

なお、if 文以外の記法については
shellScriptのfor文の書き方【サンプルコード】
の記事で解説しているので、こちらも参考にしてみて下さい。

 

それでは、その方法を詳しく解説していきましょう。

 

ShellScriptの条件分岐(最も単純な分岐)

ShellScriptの条件分岐(最も単純な分岐)

if [条件式]; then
  echo 'hogehoge'
fi

Shellscriptの条件分岐は、if文で書きます。

 

「if~fi」までが一つのコードブロックになります。

 

「if」の後に条件式を書き、コードブロックの中に処理を書きます。

 

サンプルコードで言うところの echo 'hogehoge' になります。

 

このように書くことで、条件式にマッチした時に、処理が実行されるプログラムになります。

 

ShellScriptの条件分岐(それ以外の場合も定義する)

ShellScriptの条件分岐(それ以外の場合も定義する)

if [条件式]; then
  echo 'hogehoge'
else
  echo 'fugafuga'
fi

 

条件にマッチした時以外の処理も定義したい場合は、「else」を使います。

 

サンプルコードのように書くことで、
条件式にマッチした時は echo 'hogehoge'を、
条件式にマッチしなかった時は echo 'fugafuga'を実行するプログラムになります。

 

elseを使うことで、条件式によって処理を振り分けることができるようになります。

 

if-elseを使うことで処理の幅が広がるので、しっかりと使えるようにしておきましょう。

 

ShellScriptの条件分岐(複数の分岐を定義する)

ShellScriptの条件分岐(複数の分岐を定義する)

if [条件式1]; then
  echo 'hogehoge'
elif [条件式2]; then
  echo 'fugafuga'
else
  echo 'piyopiyo'
fi

 

さらに複雑な処理を行いたい場合は、「elif」を使いましょう。

 

elifを使うことで、複数の条件式を用いて、処理を振り分けることができます。

 

例えば、サンプルコードのように書くことで
条件式1にマッチした時は echo 'hogehoge'を、
条件式1にマッチした時は echo 'fugafuga'を、
どの条件式にもマッチしない時は echo 'piyopiyo'を実行させることができます。

 

このように複数の条件式を使うことができるので、より実践的なプログラムになるでしょう。

 

ShellScriptのif文で使える条件式

ShellScriptのif文で使える条件式

ShellScriptのif文で使用できる条件式はいくつかあります。

 

代表的なものを紹介しましょう。

文字列の比較

条件式では文字列の比較を行うことができます。

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

 

#!/usr/bin/bash
 
STR1="apple"
STR2="orange"
 
if [ $STR1 != $STR2 ]; then
  echo 'hogehoge'
fi

 

このように文字列を比較します。

 

STR1とSTR2は等しくないので、
このプログラムを実行すると「hogehoge」と出力されます。

数値の比較

数値の比較なども行えます。

 

この比較が一番使用するケースが多いでしょう。

演算子説明
数値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以下なら真

 

#!/usr/bin/bash
NUM1=1
NUM2=1
 
if [ $NUM1 -eq $NUM2 ]; then
  echo 'hogehoge'
else
  echo 'fugafuga'
fi

 

NUM1とNUM2は等しいので、
このプログラムを実行すると「fugafuga」と出力されます。

ファイルチェック

ShellScriptでは、
ファイルやディレクトリの内容によって処理を振り分けることもできます。

 

このあたりはShellScriptならではの条件式になります。

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

 

#!/usr/bin/bash
 
if [ -f /var/www/hoge.txt ]; then
  echo 'hogehoge'
else
  echo 'fugafuga'
fi

 

このように条件式で指定すると、
/var/www/hoge.txt が存在する場合は hogehoge と出力されます。
存在しない場合は、fugafuga と出力されます。

 

shellscript の使い道

shellscript の使い道

ところで、ShellScriptはどのような場面で使うのでしょうか?

 

ShellScriptは使えるようになると、実は使い道の多いスキルです。

 

普段、面倒だと思いながらやっている大量のファイルのコピーや移動、ファイル名の変換などをShellScriptを使うことで自動化することが出来ます。

 

また、最近ではDockerの登場によってプログラムをコンテナ上で動かすこともあるでしょう。そのような時にDockerコンテナ内での作業(例えば、開発環境の構築など)もShellScriptで自動化することが出来ます。

 

Dockerの登場が改めてShellScriptの需要を高めたと行っても過言ではないでしょう。

 

参考までにDockerについては

などの記事で解説しています。

 

ShellScriptについてもっと知識をつけるなら

ShellScriptについてもっと知識をつけるなら

ShellScriptは手軽に作成できて、Linux/Unix/MacOSなどで動くスクリプトです。

 

広くIT業界で使われているので汎用性の高いスキルと言えるでしょう。

 

ShellScriptやLinuxコマンドについて学ぶためには以下の書籍がオススメです。

 

この書籍はLinuxやBashコマンドについて深い部分までかなり丁寧に書かれています。

Linux自身の機能だけでなく、シェルスクリプトを使ったプログラミングや、
イマドキのエンジニアなら知っておくべき知識についても解説されています。

 

Linuxコマンドについて徹底的にスキルを習得したい人にオススメです。

エンジニアとしての自身の価値をチェックする(完全無料)

エンジニアとして、

自分の価値がどれくらいのものかご存知でしょうか?

 

エンジニアとしてIT業界に身を置いていると

今の会社でずっと働くのか、フリーランスとして独立するのか …

と様々な選択肢があります。

 

どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも

自身の価値を知っておくことはとても重要です。

 

TechClips ME では、

職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。

▼▼▼▼▼

▲▲▲▲▲

しかもTechClips MEでは想定年収を企業から提示してくれるので、

自身の価値を数字で分かりやすくたしかめることができます。

 

登録はもちろん完全無料なので、一度登録してみると良いかもしれません。

 

コメント

タイトルとURLをコピーしました