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

Bashのif-else構文を徹底解説!Linuxシェルスクリプトで条件分岐を使いこなす方法

プログラミングでは、特定の条件に基づいて処理を分岐させる場面がよくあります。ここでいう「条件」とは、true(真)またはfalse(偽)というブール値に評価される式のことです。

条件に応じて異なるコードを実行するための文を「条件分岐」と呼びます。

if...elseは、最もよく使われる条件分岐のひとつです。他のプログラミング言語と同様、Bashスクリプトでもif...else文がサポートされています。この記事では、Bashにおけるif...elseの書き方と使い方を、具体例を交えながら詳しく解説します。

if文の基本構文

Bashのif文には、用途に応じていくつかの書き方があります。基本的な構造は以下の3種類です。

  • if文のみを使用する場合:if...then...fi
  • else文と組み合わせる場合:if...then...else...fi
  • 複数の条件を扱う場合:if...elif...else...fi

if文の使い方

単一のif文を使う場合、構文は次のようになります。

if [ 条件 ]
then
  処理
fi

注意点として、角括弧[ ]の内側にあるスペースは構文の一部です。スペースを削除するとエラーになるため、必ず残しておきましょう。

それでは、2つの数値を比較して、最初の数値の方が小さいかどうかを判定する例を見てみましょう。

#! /bin/sh
a=5
b=30
if [ $a -lt $b ]
then
 echo "a is less than b"
fi

このスクリプトを実行すると、条件if [ $a -lt $b ]trueと評価されるため、if文の中の処理が実行されます。

実行結果:

a is less than b

if...else文の使い方

条件が偽(false)だった場合の処理も記述したい場合は、else文を使います。構文は以下の通りです。

if [ 条件 ]
then
  条件が真の場合の処理
else
  条件が偽の場合のデフォルト処理
fi

具体的な例として、最初の数値が2つ目の数値より大きいか小さいかを判定してみましょう。このケースでは$a$bより大きいため、条件if [ $a -lt $b ]falseと評価され、else側の処理が実行されます。

#! /bin/sh
a=99
b=45
if [ $a -lt $b ]
then
 echo "a is less than b"
else
 echo "a is greater than b"
fi

実行結果:

a is greater than b

if...elif...else文の使い方

さらに多くの条件や比較を追加して、柔軟なコードを書きたい場合は、elif文を使います。構文は次のようになります。

if [ 条件 ]
then
  処理
elif [ 条件 ] 
then
  処理 
else
  デフォルトの処理
fi

より高度な比較を行うために、AND演算子の-aやOR演算子の-oを組み合わせることもできます。

次の例では、これらの条件を使って三角形の種類を判定します。

  • 不等辺三角形(Scalene):すべての辺の長さが異なる三角形
  • 二等辺三角形(Isosceles):2つの辺の長さが等しい三角形
  • 正三角形(Equilateral):すべての辺の長さが等しい三角形
read a
read b
read c
if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERAL
elif [ $a == $b -o $b == $c -o $a == $c ]
then
echo ISOSCELES
else
echo SCALENE
fi

このスクリプトでは、まずユーザーに三角形の3つの辺の長さを入力してもらいます。その後、入力された値を比較して、三角形の種類を判定します。

3
4
5
SCALENE

まとめ

if...elseなどの条件分岐を使えば、条件に応じてコードの流れを簡単に制御でき、より動的なスクリプトを作成できます。このチュートリアルでは、if...else文の構文と、実際のコード例を通じてその使い方を学びました。

ぜひ実際に手を動かして、さまざまな条件分岐のパターンを試してみてください。条件分岐を使いこなせるようになると、シェルスクリプトの幅が大きく広がります。

  1. Linux向けGUI Gitクライアント&リポジトリビューアー おすすめ11選 – 開発生産性を向上させよう

    Gitは、ソフトウェア開発をはじめとするさまざまなバージョン管理タスクに対応する、無料かつオープンソースの分散型バージョン管理システムです。小規模から非常に大規模なプロジェクトまで、スピード・効率・データ整合性を重視して設計されています。 Linuxユーザーは主にコマンドラインからGitを操作しますが、Linuxデスクトップ上で効率的かつ確実にGitを扱えるグラフィカルユーザーインターフェース(GUI)クライアントも数多く存在し、コマンドライン操作のほぼすべて(あるいはそれ以上)をカバーしています。 そこで本記事では、LinuxデスクトップユーザーにおすすめのGUI搭載Gitフロントエンドを厳

  2. LinuxでMySQL・PHP・Apacheの設定ファイルの場所を確認する方法【実践ガイド】

    LAMP(Linux、Apache、MySQL/MariaDB、PHP)スタックは、Web開発の現場で広く使われている定番の環境です。本記事では、MySQL(my.cnf)、PHP(php.ini)、Apache(httpd.conf / apache2.conf)という主要コンポーネントの設定ファイルの場所を、コマンドで特定する方法を解説します。 設定ファイル(コンフィグファイル)には、システムやアプリケーションの動作に関する各種設定が記述されています。開発者や管理者はこれらのファイルを編集することで、システムやアプリケーションの挙動を細かく制御できます。 Linuxシステム管理者にとっ