【if文】bashでの条件分岐の書き方を説明

Bash

本記事では、bashでの条件分岐の書き方を解説します。条件分岐では、if文をもちいますので、その説明をします。

if文

bashのif文は、条件に応じて異なる処理を実行するために使用します。条件が真(true)の場合は特定のコマンドを実行し、偽(false)の場合は別のコマンドを実行することができます。

構文

bashのif文の基本的な構文は以下の通りです。

if 条件式
then
    コマンド1
    コマンド2
    ...
fi

また、条件に応じて異なる処理を行いたい場合は、elseを使用します。

if 条件式
then
    条件が真の場合のコマンド
else
    条件が偽の場合のコマンド
fi

複数の条件を扱いたい場合は、elif(else ifの略)を使用します。

if 条件式1
then
    条件式1が真の場合のコマンド
elif 条件式2
then
    条件式1が偽で条件式2が真の場合のコマンド
else
    すべての条件式が偽の場合のコマンド
fi

数値の比較

数値を比較する簡単な例です。変数numの値が10より大きいかどうかを確認します。

#!/bin/bash

num=15

if [ $num -gt 10 ]
then
    echo "変数numは10より大きいです"
else
    echo "変数numは10以下です"
fi

# 出力: 変数numは10より大きいです

ファイルの存在確認

ファイルが存在するかどうかを確認する例です。

#!/bin/bash

file="/path/to/file.txt"

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

# 出力: /path/to/file.txtは存在しません
# (ファイルが存在しない場合)

文字列の比較

文字列が等しいかどうかを確認する例です。

#!/bin/bash

str1="hello"
str2="hello"

if [ "$str1" = "$str2" ]
then
    echo "二つの文字列は等しいです"
else
    echo "二つの文字列は異なります"
fi

# 出力: 二つの文字列は等しいです

複数条件の組み合わせ(AND条件)

複数の条件をAND(かつ)で結合する例です。

#!/bin/bash

age=25
has_license=true

if [ $age -ge 18 ] && [ "$has_license" = true ]
then
    echo "運転できます"
else
    echo "運転できません"
fi

# 出力: 運転できます

複数条件の組み合わせ(OR条件)

複数の条件をOR(または)で結合する例です。

#!/bin/bash

day="土曜日"

if [ "$day" = "土曜日" ] || [ "$day" = "日曜日" ]
then
    echo "週末です"
else
    echo "平日です"
fi

# 出力: 週末です

elseifを使った複数条件の分岐

成績に応じた評価を表示する例です。

#!/bin/bash

score=85

if [ $score -ge 90 ]
then
    echo "評価: A"
elif [ $score -ge 80 ]
then
    echo "評価: B"
elif [ $score -ge 70 ]
then
    echo "評価: C"
else
    echo "評価: D"
fi

# 出力: 評価: B

注意点

構文の空白に注意する

[]の内側には空白が必要です。例:[ $num -eq 10 ]は正しいですが、[$num -eq 10]はエラーになります。

#!/bin/bash

# 正しい構文(空白あり)
if [ $num -eq 10 ]
then
    echo "正しい構文です"
fi

# 誤った構文(空白なし)- エラーになります
# if [$num -eq 10]
# then
#     echo "これはエラーになります"
# fi

# 出力: 正しい構文です($numが10の場合)

終了ステータスを理解する

bashでは、コマンドの終了ステータスが0の場合は「真」、0以外の場合は「偽」と解釈されます。

#!/bin/bash

# ファイルが存在するか確認する
ls /etc/passwd > /dev/null 2>&1

# 直前のコマンドの終了ステータスを確認
if [ $? -eq 0 ]
then
    echo "ファイルが存在します"
else
    echo "ファイルが存在しません"
fi

# 出力: ファイルが存在します

まとめ

bashでの条件分岐は、if文を使って実装します。基本的な構文を理解し、適切な条件式を使うことで、様々な状況に対応した柔軟なシェルスクリプトを作成することができます。

特に、数値比較、文字列比較、ファイルテストなどの条件式を使いこなすことで、より高度なスクリプトを作成することができます。また、複数の条件を組み合わせる方法も把握しておくと便利です。

本記事で紹介した例を参考に、実際のスクリプト作成に役立ててください。

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