本記事では、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文を使って実装します。基本的な構文を理解し、適切な条件式を使うことで、様々な状況に対応した柔軟なシェルスクリプトを作成することができます。
特に、数値比較、文字列比較、ファイルテストなどの条件式を使いこなすことで、より高度なスクリプトを作成することができます。また、複数の条件を組み合わせる方法も把握しておくと便利です。
本記事で紹介した例を参考に、実際のスクリプト作成に役立ててください。