Categories: shellscript

シェルスクリプトのif文の使い方: 基本から応用まで

シェルスクリプトは、Unix系のシステムでよく使用されるスクリプト言語です。

その中でも、if文は条件に応じて処理を分岐させるために非常に重要です。

この記事では、シェルスクリプトのif文について基本的な使い方から、より複雑な条件分岐までを詳しく解説します。

基本的なif文の構文

シェルスクリプトにおけるif文は、以下のような基本構文を持っています。

if 条件式
then
    コマンド
fi

以下は、ファイルの存在をチェックする基本的なif文の例です。「test.txt」というファイルが存在するかを確認します。

#!/bin/bash

FILE="test.txt"

if [ -e "$FILE" ]
then
    echo "$FILE は存在します"
fi

if-else構文

条件が成立しない場合の処理を指定したいときは、elseを使います。

#!/bin/bash

FILE="test.txt"

if [ -e "$FILE" ]
then
    echo "$FILE は存在します"
else
    echo "$FILE は存在しません"
fi

実行すると、ファイルが存在しない場合に以下の結果が得られました。

if-elif-else構文

複数の条件をチェックしたいときは、elifを使います。

if 条件式1
then
    コマンド1
elif 条件式2
then
    コマンド2
else
    コマンド3
fi

以下の例では、変数NUMの値に応じて異なるメッセージを表示します。

-gt 5は変数NUMが5より大きい(NUM>5)かを、eq 5は変数NUMが5と等しい(NUM=5)かを判定します。

#!/bin/bash

NUM=5

if [ $NUM -gt 5 ]
then
    echo "NUMは5より大きいです。"
elif [ $NUM -eq 5 ]
then
    echo "NUMは5です"
else
    echo "NUMは5より小さいです"
fi

条件式の種類

シェルスクリプトで使用できる条件式にはいくつかの種類があります。代表的なものを以下に示します。

ファイルテスト

  • -e ファイル名: ファイルが存在するか
  • -d ディレクトリ名: ディレクトリか
  • -f ファイル名: 通常のファイルか
  • -r ファイル名: 読み取り権限があるか

文字列テスト

  • [ -z 文字列 ]: 文字列が空であるか
  • [ -n 文字列 ]: 文字列が空でないか

数値テスト

  • [ 数値1 -eq 数値2 ]: 数値が等しいか(=)
  • [ 数値1 -ne 数値2 ]: 数値が等しくないか(≠)
  • [ 数値1 -lt 数値2 ]: 数値が小さいか(<)
  • [ 数値1 -le 数値2 ]: 数値が小さいか等しいか(≦)
  • [ 数値1 -gt 数値2 ]: 数値が大きいか(>)
  • [ 数値1 -ge 数値2 ]: 数値が大きいか等しいか(≧)

まとめ

シェルスクリプトのif文は、条件に応じて処理を分岐させるための非常に強力なツールです。基本的な構文から始めて、複雑な条件分岐やファイルのテストなど、さまざま活用できます。ぜひ、実際のスクリプト作成に役立ててください。

Haruoka