条件分岐(if、else、elif)
「if」「else」「elif」文を使ってスクリプトに判断ロジックを実装し、動的な動作を実現します。
「条件分岐(if、else、elif)」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
条件分岐が重要な理由
Bashスクリプトでは、スクリプトに判断させる必要がある場合があります。たとえば、ユーザーの入力やファイルの存在に応じて異なる処理を行うスクリプトを考えてみてください。
そこで登場するのが条件分岐です。条件分岐を使うと、特定の条件を満たした場合にだけ、スクリプトで特定のコードブロックを実行できます。
基本的な`if`文
最も単純な条件分岐はif文です。条件を確認し、それがtrueの場合にコマンドのブロックを実行します。
構文は次のとおりです。
if [ condition ]then# commands if condition is truefi(ifブロックの終わりを示します)
最初の`if`スクリプト
基本的なif文の動作を見てみましょう。このスクリプトは、数値が5より大きいかどうかを確認します。
NUMBERの値を変更して実行してみてください。
#!/bin/bash
NUMBER=10
if [ $NUMBER -gt 5 ]
then
echo "The number $NUMBER is greater than 5."
fi
echo "Script finished."テスト条件を作成する
[ condition ]の部分は重要です。これは実際にはtestというコマンド、またはそのエイリアスである[です。
[[ condition ]]も使えます。こちらはより高度な構文で、より優れた構文を提供し、ワード分割に関する問題を防ぎます。初心者には[ ]が一般的です。
- 角括弧と演算子の前後には必ずスペースを入れてください。
[ ]内の変数は通常、空の値や複数の単語を含む値によるエラーを防ぐため、引用符で囲みます(例:"$VARIABLE")。
数値を比較する
Bashで数値を比較するときは、専用の演算子を使います。
-eq:等しい-ne:等しくない-gt:より大きい-ge:以上-lt:より小さい-le:以下
これらは[ ]または[[ ]]の中で使います。
文字列を比較する
テキスト(文字列)を比較する場合は、別の演算子を使います。
==または=:等しい([[ ]]では==が推奨されます)!=:等しくない-z "$STRING":文字列が空の場合にtrue(長さが0)-n "$STRING":文字列が空でない場合にtrue(長さが0ではない)
文字列変数は必ず引用符で囲むようにしてください。
`if-else`文
条件がtrueの場合に1つのコードブロックを実行し、falseの場合には別のブロックを実行したいときはどうすればよいでしょうか。
そのために使うのがif-elseです。スクリプトに別の処理経路を用意できます。
構文は次のとおりです。
if [ condition ]then# commands if trueelse# commands if falsefi
`if-else`を使ってみる
このスクリプトは数値を入力してもらい、それが正の数かどうかを伝えます。if-else構造を使用しています。
異なる入力(例:5、-3、0)で何度か実行してみてください。
#!/bin/bash
read -p "Enter a number: " NUM
if [ "$NUM" -gt 0 ]
then
echo "$NUM is a positive number."
else
echo "$NUM is not a positive number (it's zero or negative)."
fi`elif`による複数の選択肢
結果が2つより多く考えられる場合は、elif(「else if」の略)を使えます。これにより、複数の条件を順番に確認できます。
構文は次のとおりです。
if [ condition1 ]then# commands if condition1 is trueelif [ condition2 ]then# commands if condition1 is false AND condition2 is trueelse# commands if all conditions are falsefi
高度な条件判定ロジック
if、elif、elseを使って、ユーザーの年齢を分類するスクリプトを作成しましょう。これにより、複数のケースに対応できます。
[[ ]]内で条件を組み合わせるために&&(論理AND)を使っている点に注目してください。
#!/bin/bash
read -p "Enter your age: " AGE
if [[ $AGE -lt 13 ]]
then
echo "You are a child."
elif [[ $AGE -ge 13 && $AGE -lt 18 ]]
then
echo "You are a teenager."
elif [[ $AGE -ge 18 && $AGE -lt 65 ]]
then
echo "You are an adult."
else
echo "You are a senior citizen."
fi条件分岐の確認
次のBashスクリプトについて考えてみましょう。
#!/bin/bash
SCORE=85
if [ $SCORE -lt 60 ]
then
echo "Fail"
elif [ $SCORE -lt 80 ]
then
echo "Pass"
else
echo "Distinction"
fi条件分岐のまとめ
よくできました。条件分岐を使って、Bashスクリプトをより賢くする方法を学びました。
if文は、条件がtrueの場合にコードを実行します。elseは、ifの条件がfalseの場合の別の処理経路を提供します。elifを使うと、複数の条件を順番に確認できます。- 適切な演算子(数値には
-eq、文字列には==)を使い、ifブロックは必ずfiで閉じることを忘れないでください。
これらの機能は、動的で対話型のスクリプトを作成するための基本です。
よくある質問
「条件分岐(if、else、elif)」レッスンは無料ですか?
はい。「条件分岐(if、else、elif)」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「条件分岐(if、else、elif)」で何を学びますか?
「if」「else」「elif」文を使ってスクリプトに判断ロジックを実装し、動的な動作を実現します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「条件分岐(if、else、elif)」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 初めてのBashスクリプトとシバン
- 変数とユーザー入力
- 条件分岐(if、else、elif)
- Bashでの配列操作