Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Bashのif文4パターン徹底解説(if then fi / if else / elif / ネスト)実例付き

Bashの条件分岐ステートメントは、プログラマが指定した条件式が真(true)か偽(false)かを評価し、その結果に応じて異なる処理を実行する仕組みです。条件によってシェルスクリプトの処理を切り替えられるため、スクリプトの柔軟性と表現力が大きく向上します。

Bashには、主に以下の4種類の条件分岐ステートメントがあります。

  1. if..then..fi 文(単純なif)
  2. if..then..else..fi 文(if-else)
  3. if..elif..else..fi 文(else-ifによる多分岐)
  4. if..then..else..if..then..fi..fi 文(ネストされたif)

これらは、以前解説したawkのif文とよく似た構造を持っています。

1. Bashの if..then..fi 文(単純なif)

if [ 条件式 ]
then
	処理1
	処理2
	.
fi

この形式は「単純なif(simple if)」とも呼ばれます。指定した条件式が真の場合、「then」と「fi」の間に記述された処理が実行されます。条件式の評価結果が0(真)を返すと、後続の処理リストが実行される仕組みです。

if then fi のサンプルコード

#!/bin/bash
count=100
if [ $count -eq 100 ]
then
  echo "Count is 100"
fi

2. Bashの if..then..else..fi 文

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

条件式が真の場合は処理1と2が実行され、偽の場合はelseブロックへジャンプして処理3と4が実行されます。if/else部分の実行が完了すると、その後の処理へと進みます。

if then else fi のサンプルコード

#!/bin/bash
count=99
if [ $count -eq 100 ]
then
  echo "Count is 100"
else
  echo "Count is not 100"
fi

補足: 本記事はBashチュートリアルシリーズの一部です。

3. Bashの if..elif..else..fi 文

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

複数のコードブロックの中から1つだけを選択して実行したい場合に使用します。まず条件式1を評価し、真であれば処理1・2を実行します。条件式1が偽であれば条件式2を評価し、すべての条件式が偽だった場合はelseブロックに入り、その中の処理を実行します。

if then elif then else fi のサンプルコード

#!/bin/bash
count=99
if [ $count -eq 100 ]
then
  echo "Count is 100"
elif [ $count -gt 100 ]
then
  echo "Count is greater than 100"
else
  echo "Count is less than 100"
fi

4. Bashのネストされたif文(if..then..else..if..then..fi..fi)

if [ 条件式1 ]
then
	処理1
	処理2
	.
else
	if [ 条件式2 ]
	then
		処理3
		.
	fi
fi

Bashでは、if文の中にさらにif文を入れ子(ネスト)にすることが可能です。キーワード「fi」は内側のif文の終わりを示し、すべてのif文は必ず「fi」で閉じる必要があります。

先ほどの「if then elif then else fi」の例は、以下のようにネストされたif文として書き換えることもできます。

#!/bin/bash
count=99
if [ $count -eq 100 ]
then
  echo "Count is 100"
else
  if [ $count -gt 100 ]
  then
    echo "Count is greater than 100"
  else
    echo "Count is less than 100"
  fi
fi

次回の記事では、Bashの条件式を実務で活用するための具体的な例を詳しく解説していきます。

おすすめの参考書

Ramesh Natarajan著『Bash 101 Hacks』。筆者は長年Linux環境で業務を行っており、Bashコマンドラインとシェルスクリプトの熱心な愛用者です。15年以上前に*BSDや各種UNIXでCシェルやKornシェルを使って多くのコードを書いた経験を持ち、Linuxシステム管理者になってからは、あらゆるタスクをBashシェルスクリプトで自動化してきました。その経験をもとに、Bashコマンドラインとシェルスクリプトに関する101の実用的なテクニックを収録した電子書籍『Bash 101 Hacks』を執筆しています。本気でBashをマスターしたい方にとって、コマンドライン操作とシェルスクリプトを自在に操るための一冊となるでしょう。

  1. SQL ServerのIF...ELSE文とは?基本構文と実践例をわかりやすく解説

    他のプログラミング言語と同様に、SQL Serverでも条件分岐を行うためのIF...ELSEコマンドが用意されています。本記事では、IF...ELSE文の構文の使い方を、わかりやすい具体例とともに詳しく解説します。 概要 SQL ServerにおけるIF...ELSE文は、条件に応じて処理を分岐させるために使用されるステートメントです。条件がTRUE(真)と評価された場合は一方的な処理を実行し、FALSE(偽)と評価された場合には別の処理を実行します。 IF...ELSE文の構文 SQL ServerでIF...ELSEによる分岐処理を行うには、以下の構文に従って記述します。 IF 条件式{

  2. rbashとは?実例でわかる制限付きBashシェルの仕組みと使い方

    Linuxシェルは、GNU/Linux環境における最も強力で魅力的なツールのひとつです。X Window Systemをはじめとするすべてのアプリケーションはシェルを基盤として動作しており、Linuxシェルを使えばシステム全体を精密に制御できます。しかし一方で、コマンドの影響を理解せずに実行してしまうと、システムに深刻な被害をもたらす危険性も秘めています。 特に初心者ユーザーにとって、誤操作によるトラブルは大きなリスクです。そこで役立つのが「制限付きシェル」です。本記事では、rbash(制限付きBash)の概要から、実際に適用される制限内容、有効化の手順、メリット・デメリットまで詳しく解説しま